200 OK - [GET]:服務器成功返回用戶請求的數據,該操作是冪等的(Idempotent)。
201 CREATED - [POST/PUT/PATCH]:用戶新建或修改數據成功。
202 Accepted - []:表示一個請求已經進入后臺排隊(異步任務)
204 NO CONTENT - [DELETE]:用戶刪除數據成功。
400 INVALID REQUEST - [POST/PUT/PATCH]:用戶發出的請求有錯誤,服務器沒有進行新建或修改數據的操作,該操作是冪等的。
401 Unauthorized - []:表示用戶沒有權限(令牌、用戶名、密碼錯誤)。
403 Forbidden - [] 表示用戶得到授權(與401錯誤相對),但是訪問是被禁止的。
404 NOT FOUND - []:用戶發出的請求針對的是不存在的記錄,服務器沒有進行操作,該操作是冪等的。
406 Not Acceptable - [GET]:用戶請求的格式不可得(比如用戶請求JSON格式,但是只有XML格式)。
410 Gone -[GET]:用戶請求的資源被永久刪除,且不會再得到的。
422 Unprocesable entity - [POST/PUT/PATCH] 當創建一個對象時,發生一個驗證錯誤。
500 INTERNAL SERVER ERROR - [*]:服務器發生錯誤,用戶將無法判斷發出的請求是否成功。
200這個最容易理解,就是正確的請求返回正確的結果,如果不想細分正確的請求結果都可以直接返回200。
201表示資源被正確的創建。比如說,我們 POST 用戶名、密碼正確創建了一個用戶就可以返回 201。
202請求是正確的,但是結果正在處理中,沒法返回對應的結果。比如說,我們請求一個需要大量計算的結果,但是并沒有計算結束時,可以返回這個,這時候客戶端可以通過輪詢等機制繼續請求。
203請求的代理服務器修改了源服務器返回的 200 中的內容,一般用不到。比如說,我們通過代理服務器向服務器 A 請求用戶信息,服務器 A 正常響應,但代理服務器命中了緩存并返回了自己的緩存內容,這時候它返回 203 告訴我們這部分信息不一定是最新的,我們可以自行判斷并處理。
204請求正確,但是沒有需要返回的內容。比如說,我們請求刪除某個用戶,刪除成功可以返回 204。205類似 204,但是要求請求者重置視圖,一般也用不到。比如說,我們請求刪除某個用戶,服務器返回 205 的話,我們就刷新現在的用戶列表。
206請求成功,但根據請求頭只返回了部分內容。比如說,我們下載一部片,共有 10 部分,我們把請求也分成了 10 次(防止一次請求過大),這時候服務器就可以返回 206 并在其頭部告訴我們這是哪一部分,然后再根據這個信息進行拼裝。
300請求成功,但結果有多種選擇。比如說,我們下載一部片,服務器有 avi、mp4 等格式,這時候可以返回 300,并在 body 里告知有哪些格式,然后用戶可以根據這些格式再次請求。
301請求成功,但是資源被永久轉移。比如說,我們要下載葫蘆娃,但是由于舊的存儲服務商漲價了,現在要使用新的存儲服務了,要去新地址下載,這時候可以返回 301,并在 header 的 Location 中告知新的地址,以后也應當到這個地址下載。
302請求成功,但是資源被臨時轉移了。和 301 不同的是,除非是 HEAD 請求,否則新地址的信息應當在 body 中返回,并且資源只是臨時轉移,以后不應當通過新地址來下載。303類似 302,但要求使用 GET 來訪問新的地址來獲取資源。
304請求的資源并沒有被修改過。比如說,我們發送請求想看看 5.20 后的情侶信息,服務器查詢沒有新的情侶信息產生,這時候可以返回 304,然后客戶端可以繼續用舊的數據。
305請求的資源必須通過代理訪問。比如說,我們想請求服務器 A 上新的 iPhone 的信息,但是需要通過代理服務器才能訪問,如果直接請求了服務器 A,沒有經過代理服務器,這時候服務器 A 就可以返回 305 從而告訴我們應當訪問代理服務器。306不用了。307類似 302,但要求使用原有的請求方式來通過新地址獲取資源。308類似 301,但要求使用原有的請求方式來通過新地址獲取資源。// 分割線
400請求出現錯誤,比如請求頭不對等,所有不想明確區分的客戶端請求出錯都可以返回 400。401沒有提供認證信息。比如說,請求的時候沒有帶上 Token 等。
402為將來的需要所保留的狀態碼。403請求的資源不允許訪問。比如說,你使用普通用戶的 Token 去請求管理員才能訪問的資源。
404請求的內容不存在。
405請求的方法不允許使用。比如說,服務器只實現了 PATCH 了局部更新資源,并沒有實現 PUT 來替換資源,而我們使用了 PUT,這時候服務器可以返回 405 來告知并沒有實現對 PUT 的相關處理。406請求的資源并不符合要求。比如說,我們 header 里請求 JSON 格式的數據,但是服務器只有 XML 格式的數據,這時候可以返回 406 告知。407類似 401,但是要求必須去同代理服務器進行認證。
408客戶端請求超時。我們想 POST 創建一個用戶,雖然建立了連接,但是網絡不好,服務器在規定時間內沒有得到我們的請求信息,這時候服務器可以返回 408 告訴我們超時了。然后我們可以重新發送請求。409請求沖突。比如說,服務器要求不同用戶不能重名,服務器已經有了一個名叫小偉的用戶,這時候我們又想創建一個名叫小偉的用戶,服務器可以返回 409,告訴我們沖突了,也可以在 body 中明確告知是什么沖突了。410請求資源曾經存在,但現在不存在了。比如說,我們下載葫蘆娃,但是因為版權被刪了,下載不了了,這時候服務器返回 410,告訴我們洗洗早點睡。411沒有提供請求資源的長度。比如說,我們下載葫蘆娃,服務器只允許我們分部分下載,我們如果不告訴服務器我們要下載哪部分,服務器就返回 411 警告我們。412請求的資源不符合請求頭中的 IF-* 的某些條件。比如說,我們下載葫蘆娃,然后在請求頭告知服務器要 5.20 后更新過的,服務器沒有,于是返回了 412。413請求體過大。比如說,服務器要求上傳文件不能超過 5M,但是我們 POST 了 10M,這時候就返回 413。
414請求的 URI 太長了。比如說,我們提供了太多的 Query 參數,以至于超過了服務器的限制,這時候可以返回 414。415不支持的媒體類型。比如說,我們上傳了一張七娃的 GIF 動圖,而服務器只允許你上傳 PNG 圖片,這時候就返回 415。416請求的區間無效。比如說,我們分部分下載時請求葫蘆娃的 10 分鐘到 12 分鐘的內容,但是這部葫蘆娃只有 1 分鐘的內容,這時候就返回 416。417預期錯誤。指服務器沒法滿足我們在請求頭里的 Expect 相關的信息。418我是個茶壺。這是一個愚人節的玩笑,這個狀態碼就是用來搞笑的。// 分割線
500服務器錯誤。沒法明確定義的服務器錯誤都可以返回這個。501請求還沒有被實現。比如說,我們請求一個接口來自動拒絕項目經理的要求,但是這個接口只是美好的想象,并沒有被實現,這時候可以返回 501。502網關錯誤。比如說,我們向服務器 A 請求下載葫蘆娃,但是 A 其實只是一個代理服務器,他得向 B 請求葫蘆娃,但是不知道為啥 B 不理他或者給他錯誤,這時候哦可以 A 返回 502 用來表示 B 這家伙傲嬌了。503服務暫時不可用。比如說,服務器正好在更新代碼重啟。504類似 502,但是這時候是 B 不理 A,超時了 。505請求的 HTTP 版本不支持。比如說,現在強行根據 HTTP 1000 來請求。