Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何设计 API 接口,实现统一格式返回?

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

作者头像
新亮
发布于 2021-06-21 12:20:59
发布于 2021-06-21 12:20:59
1.5K00
代码可运行
举报
文章被收录于专栏:新亮笔记新亮笔记
运行总次数:0
代码可运行

文章目录

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

前后端接口交互

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

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

接口返回值约定

返回值规范

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

正确返回

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

错误返回

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 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
代码运行次数:0
运行
AI代码解释
复制
res := new(createResponse)
res.Id = 1
ctx.Payload(res)

错误返回

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
初学Go 值得深研的7大开源项目
go-admin基于Gin + Vue + Element UI的前后端分离权限管理系统,系统初始化极度简单,只需要配置文件中,修改数据库连接,系统支持多指令操作,迁移指令可以让初始化数据库信息变得更简单,服务指令可以很简单的启动api服务。
兔云小新LM
2022/11/21
3.6K0
初学Go 值得深研的7大开源项目
Go - 统一定义 API 错误码
errno.ErrUserPhone、errno.OK 表示自定义的错误码,下面会看到定义的地方。
新亮
2021/01/05
1.3K0
怎么在5分钟之内跑起来一个完整项目之gin
不得不说go-gin-api的作者实在想得周全,跑起来不报错,会提示你填写环境信息。
机智的程序员小熊
2023/03/02
4310
怎么在5分钟之内跑起来一个完整项目之gin
如何设计API接口,实现统一格式返回?
在移动互联网,分布式、微服务盛行的今天,现在项目绝大部分都采用的微服务框架,前后端分离方式,(题外话:前后端的工作职责越来越明确,现在的前端都称之为大前端,技术栈以及生态圈都已经非常成熟;以前后端人员瞧不起前端人员,那现在后端人员要重新认识一下前端,前端已经很成体系了)。
美的让人心动
2019/06/11
2.3K0
如何设计API接口,实现统一格式返回?
你写得API接口代码真是一坨"屎",难道不能对返回格式统一处理一下吗?
随着互联网各岗位精细化分工的普及,出现了很多的系统架构设计,比如常见的前后端分离架构,后端提供接口给前端,前端根据接口的数据进行渲染,大家各执其职,效率也非常的高,但是随着接口的增加,如果不统一的规范就会额外的增加大量的沟通成本以及学习成本,对管理者而言是非常的不利。
开发者技术前线
2020/11/23
7130
你写得API接口代码真是一坨"屎",难道不能对返回格式统一处理一下吗?
看看人家那后端API接口写得,那叫一个牛逼,再看看我的,像坨屎!
在移动互联网,分布式、微服务盛行的今天,现在项目绝大部分都采用的微服务框架,前后端分离方式,(题外话:前后端的工作职责越来越明确,现在的前端都称之为大前端,技术栈以及生态圈都已经非常成熟;以前后端人员瞧不起前端人员,那现在后端人员要重新认识一下前端,前端已经很成体系了)。
架构师修炼
2020/10/23
1.1K0
Java设计RestfulApi接口,实现统一格式返回
创建返回状态码枚举 package com.sunny.tool.api.enums; /** * @Author sunt * @Description 响应枚举状态码 * @Date 2019/10/31 **/ public enum ResultCode { // 成功 SUCCESS(200), // 失败 FAIL(400), // 未认证(签名错误) UNAUTHORIZED(401), // 接口不存在 NOT
sunny1009
2020/06/19
2K0
Java设计RestfulApi接口,实现统一格式返回
Go - 一个对新手很友好的项目(带界面)
go-gin-api 是基于 Gin 进行模块化设计的 API 框架,封装了常用的功能,使用简单,致力于进行快速的业务研发,同时增加了更多限制,约束项目组开发成员,规避混乱无序及自由随意的编码。
新亮
2021/04/26
8180
优雅地进行全局异常处理、统一返回值封装、自定义异常错误码——Graceful-Response推荐
Graceful Response是一个Spring Boot体系下的优雅响应处理器,提供一站式统一返回值封装、全局异常处理、自定义异常错误码等功能,使用Graceful Response进行web接口开发不仅可以节省大量的时间,还可以提高代码质量,使代码逻辑更清晰。
用户2865443
2023/11/09
3.2K0
Go语言错误码设计与管理实践
最近在做一个和前端、第三方平台(可以简单理解为公司别的部门或者客户软件)直接交互的服务,涉及到用户注册、登录、数据处理等模块。架构图大概如下:
xin猿意码
2023/10/18
9270
Go语言错误码设计与管理实践
全局统一格式返回
Part1文章首推 支付宝接口对接 高德地图调用 验证码登录 QQ邮箱登录 Part2今日主题:全局统一格式返回 相信全局统一格式返回这个东西在每个项目中都非常重要的,前端需要一个统一的格式给前端,所以我们后端需要封装好结构给前端。 1结构 我目前接触的结构基本上是这样的。 { "code":"0", "msg":"请求正常", "data":{} } 2实现 创建一个统一返回前端的实体类 public class R extends HashMap<String, Object> { priv
java后端指南
2021/10/19
5050
Go - 实现项目内链路追踪
当一个请求中,请求了多个服务单元,如果请求出现了错误或异常,很难去定位是哪个服务出了问题,这时就需要链路追踪。
新亮
2021/02/03
5230
Go - 实现项目内链路追踪
Spring Boot 无侵入式 实现 API 接口统一 JSON 格式返回
无侵入式 统一返回JSON格式 其实本没有没打算写这篇博客的,但还是要写一下写这篇博客的起因是因为,现在呆着的这家公司居然没有统一的API返回格式?,询问主管他居然告诉我用HTTP状态码就够用了(fx
架构师修炼
2020/11/19
1.2K0
【项目实践】后端接口统一规范的同时,如何优雅得扩展规范?
之前写过如何通过参数校验 + 统一相应码 + 统一异常处理来构建一个优雅后端接口体系:
IT大咖说
2020/05/19
9610
【项目实践】后端接口统一规范的同时,如何优雅得扩展规范?
Go - 实现项目内链路追踪(二)
上篇文章 Go - 实现项目内链路追踪 分享了,通过 链路 ID 可以将 请求信息、响应信息、调用第三方接口的信息、调试信息、执行的 SQL 信息、执行的 Redis 信息 串起来,记录的具体参数在文件中都有介绍。
新亮
2021/03/04
6410
干货 | 看看人家那后端API接口写得,那叫一个得劲
前端和后端进行交互,前端按照约定请求URL路径,并传入相关参数,后端服务器接收请求,进行业务处理,返回数据给前端。
xcbeyond
2020/12/30
5240
干货 | 看看人家那后端API接口写得,那叫一个得劲
统一定制API返回格式,我只做了这几件事
转自:blog.csdn.net/qq_34347620/article/details/102239179
猿天地
2020/09/22
2.2K0
Spring Boot 无侵入式 实现API接口统一JSON格式返回
2020年Java原创面试题库连载中 【000期】Java最全面试题库思维导图 【020期】JavaSE系列面试题汇总(共18篇) 【028期】JavaWeb系列面试题汇总(共10篇) 【042
java进阶架构师
2020/10/23
1.5K0
Spring Boot 无侵入式 实现API接口统一JSON格式返回
Gin框架-[WARNING] Headers were already written. Wanted to override status code 400 with 200
Gin框架编写PUT接口使用BindJSON绑定参数报错,当结构体绑定参数有误时, 状态码为400,强制返回200,结果code还是400.
双面人
2021/04/19
4.9K0
快速学习-Smart-Doc Project 基于JAVA-REST和dubbo的API接口文档
smart-doc是一款同时支持JAVA REST API和Apache Dubbo RPC接口文档生成的工具,smart-doc在业内率先提出基于JAVA泛型定义推导的理念, 完全基于接口源码来分析生成接口文档,不采用任何注解侵入到业务代码中。你只需要按照java-doc标准编写注释, smart-doc就能帮你生成一个简易明了的Markdown、HTML5、Postman Collection2.0+、OpenAPI 3.0+的文档。
cwl_java
2021/08/30
1.4K0
快速学习-Smart-Doc Project 基于JAVA-REST和dubbo的API接口文档
推荐阅读
相关推荐
初学Go 值得深研的7大开源项目
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验