首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >如何设计 API 接口,实现统一格式返回?

如何设计 API 接口,实现统一格式返回?

作者头像
新亮
发布2021-06-21 20:20:59
发布2021-06-21 20:20:59
1.7K0
举报
文章被收录于专栏:新亮笔记新亮笔记

文章目录

  • 前后端接口交互
  • 接口返回值约定
    • 返回值规范
    • 正确返回
    • 错误返回
  • 统一定义错误码
    • 错误码规范
  • Controller 层如何用?
    • 正确返回
    • 错误返回
  • 详细代码实现
    • 错误码
    • Controller
  • 总结
    • 问题思考

前后端接口交互

我们都知道,前端通常会通过后台提供的接口来获取数据来完成前端页面的渲染,前端可以为 PC 端、M 端、小程序、APP 等。

在这废话就不多说了,这不是重点。

接口返回值约定

返回值规范

  • 设置返回的 HTTP 响应状态码;
  • 发生错误时,需设置 Response Body 的错误码和描述信息;

正确返回

HTTP 响应状态码,设置成 200,Response Body 结构为返回的数据结构。

错误返回

HTTP 响应状态码,不要设置成 200!需遵循 RFC 标准。

代码语言:javascript
复制
// 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 层如何用?

正确返回

代码语言:javascript
复制
res := new(createResponse)
res.Id = 1
ctx.Payload(res)

错误返回

代码语言:javascript
复制
c.AbortWithError(errno.NewError(
 http.StatusBadRequest,
 code.AdminCreateError,
 code.Text(code.AdminCreateError)).WithErr(err),
)

return 

详细代码实现

错误码

  • 错误码封装:https://github.com/xinliangnote/go-gin-api/blob/master/pkg/errno/errno.go
  • 定义错误码:https://github.com/xinliangnote/go-gin-api/blob/master/internal/api/code/code.go

Controller

  • https://github.com/xinliangnote/go-gin-api/blob/master/internal/api/controller/admin_handler/func_create.go

总结

以上代码供大家参考,还有优化的空间,欢迎大家使用并提出宝贵意见。

问题思考

  • 1、提供对外接口时,如何进行安全的签名验证?
  • 2、接口的幂等性如何设计?
  • 3、如何统一对返回数据进行敏感数据脱敏?
  • 4、如何设计接口日志,便于接口联调时快速进行错误定位?
  • 5、关于接口文档,如何进行自动生成?听说过 swagger 还不知道如何使用?

如果你对以上问题有疑惑或拿捏不准,快来我的星球交流讨论吧。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-05-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 新亮笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前后端接口交互
  • 接口返回值约定
    • 返回值规范
    • 正确返回
    • 错误返回
  • 统一定义错误码
    • 错误码规范
  • Controller 层如何用?
    • 正确返回
    • 错误返回
  • 详细代码实现
    • 错误码
    • Controller
  • 总结
    • 问题思考
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档