溫故知新(2)--程序員不得不知的HTTP Status Code

在網絡應用開發蓬勃發展的今天,TCP/IP協議族已經成了網絡應用開發不可或缺的一部分,而應用層的HTTP協議更是無法繞開,如果一個程序員連HTTP狀態碼都不知道是什麼的話,十有八九是要遭人白眼的。
在工作中遇到有些同學對HTTP協議概念理解不清或者不知道該怎麼使用HTTP狀態碼,甚至有人誤以爲“我向Server發送一個HTTP Request,只要能收到一個HTTP Response就說明我代碼寫對了”,殊不知HTTP Response就是通過不同的StatusCode來區分的。就好比我們去商店買飲料,我們問店員“請給我一瓶飲料”,期望的回答當然是“你好,這是您的飲料”,但事實上的回答回答可能有:“對不起,你要的飲料已經買完了”–404、“對不起,這個飲料只供給會員”–401、“對不起,請您排隊稍等”–202、“Can you speak English?”(外國商店,你得說外文)–101…
所以瞭解HTTP狀態碼的用途可以更有針對性的對業務進行處理,今天就來回顧下那些常用的HTTP Status Code

1xx

1xx 狀態碼一般是一個請求的中間狀態,一般是信息提示,請求協商

狀態碼編號 狀態碼標識 說明
100 Continue 請求未結束,應該繼續請求
101 Switching Protocol 協議轉換,在使用 Web Socket 的時候就會遇到,下面是一個示例,響應會有一個 Connection:Upgrade 的請求頭, Upgrade 會指定要使用的協議名稱

2xx

2xx 一般表示請求處理成功

200 OK,請求處理成功

狀態碼編號 狀態碼標識 說明
201 Created 請求處理成功,並且新資源已經創建
202 Accepted 請求已經接受,正在處理,尚未處理完成
204 No Content 響應內容爲空,在 asp.net core 中返回一個 Json(null) 的時候就會是一個 NoContent 的結果

3xx

3xx 一般表示重定向

狀態碼編號 狀態碼標識 說明
301 Moved Permanently 永久重定向
302 Found 臨時重定向
304 Not Modified 資源未發生修改,可以直接使用瀏覽器本地緩存
307 Temporary Redirect 臨時重定向請求
308 Permanent Redirect 永久重定向請求

注意:

  • 301、302 只支持 GET 請求,如果是 POST 請求,重定向後會使用 GET 請求且 Body 數據會丟失
  • 307、308 支持 POST 請求,在 POST 重定向的時候會帶上原來請求的 body 再請求新的地址,body 數據不會丟失
  • 302、307 是臨時重定向
  • 301、308 是永久重定向,是允許緩存的,瀏覽器可以緩存

4xx

4xx 一般表示客戶端請求錯誤

狀態碼編號 狀態碼標識 說明
400 BadRequest 錯誤請求,一般用來表示請求參數異常,比如請求的某一個參數不能爲空,但實際請求是空
401 Unauthorized 未授權,資源需要授權或登錄,而用戶沒有登錄或者沒有提供訪問所需的 Token 等
403 Forbidden 禁止訪問,當前用戶沒有權限訪問資源,如需要Admin角色的用戶,但是請求的用戶沒有這個角色
404 NotFound 未找到資源,資源不存在
405 Method Not Allowed 不允許的方法調用,資源不支持的請求方法,比如資源只允許 GET 請求,但是實際請求使用了 POST 或 DELETE 方法
406 Not Acceptable 請求的資源客戶端不支持處理,比如客戶端希望獲取 xml 的響應,但是服務器端只支持 JSON 響應
408 Request Timeout 請求處理超時
409 Conflict 請求資源衝突,常發生在 PUT 更新資源信息時發生,比如更新時指定資源的 ETAG,但是PUT請求時,資源的 ETAG 已經發生變化
410 Gone 請求資源在源服務器上不再可用
411 Length Required 請求需要攜帶 Content-Length 請求頭
412 Precondition Failed 請求預檢失敗,請求的某些參數不符合條件
413 Payload Too Large 請求的參數太大,請求的 body 過大,服務器拒絕處理
414 URI Too Long 請求的 URI 地址太長,服務器拒絕處理
415 Unsupported Media Type 不支持的媒體類型或不支持的編碼,比如服務器只支持處理 JSON 請求,但是請求是 xml 格式

5xx

5xx 一般表示服務端錯誤

狀態碼編號 狀態碼標識 說明
500 Internal Server Error 服務器內部錯誤
501 Not Implemented 服務器不支持需要處理請求的功能,比如圖片壓縮等處理
502 Bad Gateway 反向代理或網關找不到處理請求的服務器
503 Service Unavailable 服務不可用
504 Gateway Timeout 網關超時
505 HTTP Version Not Supported 不支持的 HTTP 版本,服務器不支持或拒絕處理這個 HTTP 版本的請求
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章