0%

【Day-18】HTTP Status Code與統一200的設計

文章同步於it邦

前言

今天來繼續說明什麼是HTTP Status Code,以及為什麼有時候會那麼常看到200的status code

什麼是HTTP Status Code

簡單來說就是執行一個http或https請求後得到的一個狀態的回覆,但以數字表示
例如最常見的就是在我執行完一個GET請求後就會給一個200表示我完成這個請求

統一200的設計

通常在實務上有兩種做法,第一種就是我們直接沿用定義好的status code去表示狀態

第二種則是統一回傳200,但我的詳細的狀態會帶再回傳格式裡面
當我統一回傳200時,對於前端的框架來說是比較好處理的
這種做法比較會應用在大專案上,因為400、500系列的錯誤無法應付專案需求而需要客製化

所以我可能會類似這樣

1
2
3
4
5
{
"status_code": 10000,
"message": "資料庫意外錯誤",
"detail": ["資料庫被關閉而無法連線"],
}

可能類似的錯誤還有好幾種,所以會用客製化的錯誤碼

不過如果是統一回傳200,但又沒有自定義錯誤碼的時候就容易讓設計面的詭異
此時的訊息傳達是不夠清晰的,且也有可能影響SEO的分數
前者就是違反我們的系列主軸的核心概念的,在傳達訊息不夠清晰的狀況下,就有可能導致誤會,衍生出其他問題

常見的status code

通常最常見的我們會使用200、201、204
200用於Get請求以及大部分的狀況
201用於建立資源使使用
204則是put、patch、head等確認成功或是資源是否存在時使用

失敗的則多為400、401、404、500
400通常用於絕大多數的錯誤訊息,而這個錯誤是因明顯的客戶端錯誤而起,例如email格式錯誤
401通常會在驗證token失敗時使用,也就是說沒有經過驗證,注意是沒有驗證,跟沒有權限不同,沒有權限通常可以回覆403
404則是找不到路徑或資源
500看到就可以直接告訴後端失火了你的邏輯有bug

參考資料

HTTP Status Code