在設計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