在设计API HTTP 状态码的时候,咱们总能听到两种声音:
第一种,也是你们最经常使用的:git
全部接口的状态码都返回 200
,而后在自定义错误码:github
# 正确响应 { "code: 200, "message": "success", "data": { "id": ..., ... } } # 错误响应 { "code: 1001, // 自定义错误类型 "message": "error message", "data": {} }
另外一种,Rest API,仅使用HTTP状态代码:json
# 正确响应 HTTP/1.1 200 Content-Type: application/json { "id": ..., ... } # 错误响应 HTTP/1.1 401 Unauthorized { "message": "Bad credentials" }
更多的错误码规范能够直接从 HTTP Status Code 查看。后端
为何说是两种声音,其实如今基本规范的话都会直接选择第二种,基本上,Github的api
Github API v3以及如今广泛后端框架的设计都对于Rest API
有着更好的支持。
因此上面声音的争执彷佛存在与先后端的更多些。app
补充一下Github v4
版本已经开始使用GraphQL
了,GraphQL
是一种查询语言,相比于Rest API
的设计,如今国外比较喜欢和流行GraphQL
,但好像国内还并未据说有过多的使用。
说一下二者的优缺点吧,
第一种:框架
第二种:设计
而结合两种优缺点,如今许多人开始有了第三种方式:HTTP Status 与Json body 相结合
code