前后端接口交互
我们都知道,前端通常会通过后台提供的接口来获取数据来完成前端页面的渲染,前端可以为 PC 端、M 端、小程序、APP 等。
在这废话就不多说了,这不是重点。
接口返回值约定
返回值规范
- 设置返回的 HTTP 响应状态码;
- 发生错误时,需设置 Response Body 的错误码和描述信息;
正确返回
HTTP 响应状态码,设置成 200,Response Body 结构为返回的数据结构。
错误返回
HTTP 响应状态码,不要设置成 200!需遵循 RFC 标准。
// Failure 错误时返回结构
type Failure struct {
Code int `json:"code"` // 业务码
Message string `json:"message"` // 描述信息
}
统一定义错误码
错误码规范
- 统一在一个文件中定义错误码;
- 错误码长度为 5 位;
第 1 位表示错误是哪种级别?例如:1 为系统级错误,2 为业务模块错误,可标记 9 种错误级别。
第 2 位和第 3 位表示错误是哪个模块?例如:01 为用户模块,02 为订单模块,可标记 99 个模块。
第 4 位和第 5 为表示具体是什么错误?例如:01 为手机号不合法,02 为验证码输入错误,可标记 99 个错误。
Controller 层如何用?
正确返回
res := new(createResponse)
res.Id = 1
ctx.Payload(res)
错误返回
c.AbortWithError(errno.NewError(
http.StatusBadRequest,
code.AdminCreateError,
code.Text(code.AdminCreateError)).WithErr(err),
)
return
详细代码实现
错误码
- 错误码封装:github.com/xinliangnot…
- 定义错误码:github.com/xinliangnot…
Controller
- github.com/xinliangnot…
总结
以上代码供大家参考,还有优化的空间,欢迎大家使用并提出宝贵意见。