当业务需要更复杂的错误码定义时,我们可以自定义实现业务自己的错误码,只需要实现gcode.Code
相关的接口即可。
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:空间域名、网页空间、营销软件、网站建设、牟平网站维护、网站推广。
我们来看个例子。
定义结构体并实现gcode.code
接口定义的方法
type BizCode struct {
code int
message string
detail BizCodeDetail
}
type BizCodeDetail struct {
Code string
HttpCode int
}
func (c BizCode) BizDetail() BizCodeDetail {
return c.detail
}
func (c BizCode) Code() int {
return c.code
}
func (c BizCode) Message() string {
return c.message
}
func (c BizCode) Detail() interface{} {
return c.detail
}
func New(httpCode int, code string, message string) gcode.Code {
return BizCode{
code: 0,
message: message,
detail: BizCodeDetail{
Code: code,
HttpCode: httpCode,
},
}
}
定义业务错误码
var (
CodeNil = New(200, "OK", "")
CodeNotFound = New(404, "Not Found", "Resource does not exist")
CodeInternal = New(500, "Internal Error", "An error occurred internally")
// ...
)
func ResponseHandler(r *ghttp.Request) {
r.Middleware.Next()
// There's custom buffer content, it then exits current handler.
if r.Response.BufferLength() > 0 {
return
}
res, err := r.GetHandlerResponse()
code := gerror.Code(err)
if code == gcode.CodeNil && err != nil {
code = CodeInternal
} else {
code = CodeNil
}
if bizCode, ok := code.(BizCode); ok {
r.Response.WriteStatus(bizCode.BizDetail().HttpCode)
}
_ = r.Response.WriteJson(g.Map{
`code`: gcode.CodeOK.Code(),
`message`: gcode.CodeOK.Message(),
`data`: res,
})
}
网页标题:创新互联GoFrame教程:GoFrame错误码特性-错误码实现
标题路径:http://www.gawzjz.com/qtweb2/news3/19253.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联