背景
在做接口设计时,对于一些异样的响应如何解决始终是开发者们头疼的问题,不同的团队有不同的规定。有的团队会利用 http 状态码去示意各种状况的异样。有的团队会针对异样对立的返回 200,而后在数据中减少一个 code 参数,用于示意各种异样的错误码,message 参数中示意具体的错误信息。如下图所示:
那么到底两种计划有什么区别呢?我试着问了问 ChatGPT。
ChatGPT 这么说
问:在做接口设计时,能够用 http 状态码示意一些异常情况。也能够对立设置 http 状态码为 200,而后在返回的数据中增加自定义的 code 码。这两种形式各有什么劣势和劣势呢?另外请提供一个抉择上的倡议
答:
在做接口设计时,能够用 http 状态码示意一些异常情况。也能够对立设置 http 状态码为 200,而后在返回的数据中增加自定义的 code 码。这两种形式各有优劣,具体如下:
- 应用 http 状态码的长处是合乎 HTTP 协定的标准,能够让客户端和服务器之间更容易地替换信息和处理错误。HTTP 状态码曾经定义了很多常见的状况,比方 200 示意胜利,404 示意找不到资源,500 示意服务器外部谬误等。应用 http 状态码的毛病是有些状况可能不太适宜用规范的状态码来示意,比方业务逻辑上的谬误或者非凡的需要。尽管能够创立自定义的状态码,然而这可能会导致与其余零碎或框架不兼容或者引起混同。
- 应用自定义的 code 码的长处是能够更灵便地示意各种业务逻辑上的谬误或者非凡的需要,比方用户未登录、余额有余、验证码谬误等。应用自定义的 code 码的毛病是不合乎 HTTP 协定的标准,可能会让客户端和服务器之间更难以替换信息和处理错误。比方,如果客户端收到一个 200 的状态码,然而实际上接口返回了一个业务逻辑上的谬误,那么客户端就须要解析返回数据中的 code 码来判断是否胜利,并且依据不同的 code 码做出相应的解决。
综上所述,在抉择应用 http 状态码还是自定义 code 码时,须要思考以下几个因素:
- 是否须要恪守 HTTP 协定的标准
- 是否须要与其余零碎或框架兼容
- 是否须要表白非标准或简单的业务逻辑
- 是否须要简化客户端和服务器之间的通信和错误处理
一般来说,倡议应用 http 状态码作为次要的响应形式,并且尽量应用规范定义好的状态码。如果有非凡需要或者无奈用标准状态码示意,则能够思考应用自定义 code 码作为补充,并且在文档中分明地阐明每个 code 的含意和对应操作。
不得不说,ChatGPT 果然弱小,齐全的解答了笔者的纳闷。总而言之,就是说咱们在设计接口响应时,如果是失常响应,那么就返回 200 和本来的数据就好了。如果是有异样的状况,则能够 status code 和自定义 code 配合应用。一个最佳的实际倡议是联合两种形式,即应用 HTTP 状态码示意根本的谬误类型和语义,同时在返回数据中增加自定义 code 码示意具体的业务谬误。例如:
{
"code": 1001,
"message": "用户名或明码谬误",
"data": null
}
这样既能够恪守 HTTP 标准,又能够提供更多的错误信息。
既然要恪守 HTTP 标准,那么咱们就得晓得 HTTP 标准如何规定咱们怎么定义状态码的,于是我又问了 ChatGPT。
问:HTTP 状态码设置的标准是什么?
答:
HTTP 状态码是用以示意网页服务器超文本传输协定响应状态的 3 位数字代码。它由 RFC 2616 标准定义的,并失去 RFC 2518、RFC 2817、RFC 2295、RFC 2774 与 RFC 4918 等标准扩大。HTTP 状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型。响应分为五类:信息响应 (100–199),胜利响应 (200–299),重定向 (300–399),客户端谬误 (400–499)和服务器谬误 (500–599)。设置 HTTP 应答头往往和设置状态行中的状态代码联合起来。
问:有哪些默认的规范的 HTTP 状态码呢?
答:
默认的规范的 HTTP 状态码有很多,常见的有以下几种:
- 200 – 申请胜利
- 301 – 永恒重定向
- 302 – 长期重定向
- 304 – 资源未修改
- 400 – 谬误申请
- 401 – 未经受权
- 403 – 禁止拜访
- 404 – 申请谬误
- 500 – 外部服务器谬误
总结
不得不说,ChatGPT 在搜寻场景里,大大晋升了咱们的效率。尽管这些问题间接应用搜索引擎也能找到答案,然而咱们须要本人花工夫去各种浏览筛选汇总信息,而且搜寻后果中,还充斥着大量的低质和无用信息。而当初,ChatGPT 能间接把后果提炼进去,而且十分的准确,像一个十分有资格的大佬个别。当然,这也十分考验咱们的发问能力,也就是说你得分明的晓得本人不晓得什么(哈哈哈,有点绕)。
博客原创地址:接口响应错误码应该怎么设计?ChatGPT 这么说
欢送批评指正,或者与我交换探讨前端开发技术~
分割我:imwty2023(微信),iwhitney@163.com(邮箱)