起源:https://ken.io/note/api-error...
一、前言
客户端申请API,通常须要通过返回码来判断API返回的后果是否合乎预期,以及该如何解决返回的内容等
置信很多同学都吃过返回码定义凌乱的亏,有的API用返回码是int类型,有的是string类型,有的用0示意胜利,又有的用1示意胜利,还有用”true”示意胜利,碰上这种事件,只能说:头疼
API返回码的设计还是要认真对待,毕竟好的返回码设计能够升高沟通老本以及程序的保护老本
二、HTTP状态码参考
以HTTP状态码为例,为了更加清晰的表述和辨别状态码的含意,HTTP状态做了分段。
分段 | 分段形容 |
---|---|
1XX | 信息,服务器收到申请,须要请求者继续执行操作 |
2XX | 胜利,操作被胜利接管并解决 |
3XX | 重定向,须要进一步的操作以实现申请 |
4XX | 客户端谬误,申请蕴含语法错误或无奈实现申请 |
5XX | 服务器谬误,服务器在解决申请的过程中产生了谬误 |
对于后端开发来说,咱们通常见到的都是:
2XX状态码,比方200->申请胜利,
5XX状态码,比方502->服务器异样,通常就是服务没失常运行,或者代码执行出错
通过状态码即可初步判断问题起因,HTTP状态的设计思路值得借鉴。
三、参数约定
虽说是返回码设计,然而只有code是不行的,还要有对应的message,让人能够看懂
字段 | 类型 | 阐明 |
---|---|---|
code | int | 返回码 |
message | string | 返回码阐明 |
参考HTTP状态码的思路,咱们对错误码进行分段
返回码值 | 阐明 |
---|---|
0 | 胜利 |
99999 | 零碎产生未知异样 |
10000-19999 | 参数校验谬误 |
20000-29999 | A步骤执行失败 |
30000-39999 | B步骤执行失败 |
通过这样的设计,不论是程序还是人都能够十分不便的辨别API的返回后果,要害是对立!
四、个性化Message
通常咱们的message都是写给工程师看的,然而在不同的场景下,同样的谬误,可能须要给用户看到不一样的谬误提醒。
比方说 20000-29999示意订单创立失败:
- 20001,订单创立失败,存在进行中的订单
- 20002,订单创立失败,上一个订单正在排队创立中
这两种谬误状况如果是给用户看,可能就只适宜看到:很道歉,您有一个正在进行中的订单,请到我的订单列表中解决。
然而对于API来说,返回的信息又必须是精确的,但用户看到的就必须转译,这个转译的工作调用方能够做,然而通常API提供者来提供个性化的Message能力会更好
咱们能够把转译的音讯配置到数据库,并缓存到Redis或者API本机
application_id | code | message |
---|---|---|
100001 | 20001 | 很道歉,您有一个正在进行中的订单,请到我的订单列表中解决。 |
100001 | 20002 | 很道歉,您有一个正在进行中的订单,请到我的订单列表中解决。 |
而后在申请解决完结行将返回的时候,依据application_id+code,去匹配替换message
这样咱们就能够让手机APP的用户、微信小程序的用户、网页下单的企业用户看到不同的音讯
五、返回信息的对立解决
有了对立的code,咱们就能够通过Nginx或者APM工具统计API申请Code数量及散布信息。
咱们能够依据单位工夫内99999的数量来做API的异样告警
咱们能够依据Code的返回饼图,帮忙咱们发现零碎、业务流程中的问题
等等,总之,好的返回码设计,能够帮忙咱们进步沟通效率,升高代码的保护老本。
近期热文举荐:
1.1,000+ 道 Java面试题及答案整顿(2022最新版)
2.劲爆!Java 协程要来了。。。
3.Spring Boot 2.x 教程,太全了!
4.20w 程序员红包封面,快快支付。。。
5.《Java开发手册(嵩山版)》最新公布,速速下载!
感觉不错,别忘了顺手点赞+转发哦!