關於 RESTful API HTTP狀態碼

2021-09-19 07:36:58 字數 2027 閱讀 3616

關於 restful api 中 http 狀態碼的定義

其中 2xx/3xx 其實都是請求成功,但是結果不同。4xx 是請求出錯,5xx 是伺服器處理出現錯誤。

這個最容易理解,就是正確的請求返回正確的結果,如果不想細分正確的請求結果都可以直接返回200。

表示資源被正確的建立。比如說,我們 post 使用者名稱、密碼正確建立了乙個使用者就可以返回 201。

請求是正確的,但是結果正在處理中,沒法返回對應的結果。比如說,我們請求乙個需要大量計算的結果,但是並沒有計算結束時,可以返回這個,這時候客戶端可以通過輪詢等機制繼續請求。

請求的**伺服器修改了源伺服器返回的 200 中的內容,一般用不到。比如說,我們通過**伺服器向伺服器 a 請求使用者資訊,伺服器 a 正常響應,但**伺服器命中了快取並返回了自己的快取內容,這時候它返回 203 告訴我們這部分資訊不一定是最新的,我們可以自行判斷並處理。

請求正確,但是沒有需要返回的內容。比如說,我們請求刪除某個使用者,刪除成功可以返回 204。

類似 204,但是要求請求者重置檢視,一般也用不到。比如說,我們請求刪除某個使用者,伺服器返回 205 的話,我們就重新整理現在的使用者列表。

類似 302,但要求使用 get 來訪問新的位址來獲取資源。

請求的資源並沒有被修改過。比如說,我們傳送請求想看看 5.20 後的情侶資訊,伺服器查詢沒有新的情侶資訊產生,這時候可以返回 304,然後客戶端可以繼續用舊的資料。

請求的資源必須通過**訪問。比如說,我們想請求伺服器 a 上新的 iphone 的資訊,但是需要通過**伺服器才能訪問,如果直接請求了伺服器 a,沒有經過**伺服器,這時候伺服器 a 就可以返回 305 從而告訴我們應當訪問**伺服器。

不用了。

類似 302,但要求使用原有的請求方式來通過新位址獲取資源。

類似 301,但要求使用原有的請求方式來通過新位址獲取資源。

請求出現錯誤,比如請求頭不對等,所有不想明確區分的客戶端請求出錯都可以返回 400。

沒有提供認證資訊。比如說,請求的時候沒有帶上 token 等。

為將來的需要所保留的狀態碼。

請求的資源不允許訪問。比如說,你使用普通使用者的 token 去請求管理員才能訪問的資源。

請求的內容不存在。

請求的方法不允許使用。比如說,伺服器只實現了 patch 了區域性更新資源,並沒有實現 put 來替換資源,而我們使用了 put,這時候伺服器可以返回 405 來告知並沒有實現對 put 的相關處理。

請求的資源並不符合要求。比如說,我們 header 裡請求 json 格式的資料,但是伺服器只有 xml 格式的資料,這時候可以返回 406 告知。

類似 401,但是要求必須去同**伺服器進行認證。

客戶端請求超時。我們想 post 建立乙個使用者,雖然建立了連線,但是網路不好,伺服器在規定時間內沒有得到我們的請求資訊,這時候伺服器可以返回 408 告訴我們超時了。然後我們可以重新傳送請求。

請求衝突。比如說,伺服器要求不同使用者不能重名,伺服器已經有了乙個名叫小偉的使用者,這時候我們又想建立乙個名叫小偉的使用者,伺服器可以返回 409,告訴我們衝突了,也可以在 body 中明確告知是什麼衝突了。

請求體過大。比如說,伺服器要求上傳檔案不能超過 5m,但是我們 post 了 10m,這時候就返回 413。

請求的 uri 太長了。比如說,我們提供了太多的 query 引數,以至於超過了伺服器的限制,這時候可以返回 414。

不支援的**型別。比如說,我們上傳了一張七娃的 gif **,而伺服器只允許你上傳 png ,這時候就返回 415。

預期錯誤。指伺服器沒法滿足我們在請求頭里的 expect 相關的資訊。

我是個茶壺。這是乙個愚人節的玩笑,這個狀態碼就是用來搞笑的。

伺服器錯誤。沒法明確定義的伺服器錯誤都可以返回這個。

請求還沒有被實現。比如說,我們請求乙個介面來自動拒絕專案經理的要求,但是這個介面只是美好的想象,並沒有被實現,這時候可以返回 501。

服務暫時不可用。比如說,伺服器正好在更新**重啟。

類似 502,但是這時候是 b 不理 a,超時了 。

請求的 http 版本不支援。比如說,現在強行根據 http 1000 來請求。

關於程式關於世界

首先,在學了1年多的軟體設計的基礎上,問下自己 程式是什麼?業務需求是什麼?程式有什麼用?什麼是演算法?什麼是資料庫?或許每個人的理解不同,會給出不同的答案。那麼自己的理解 程式是乙個讓計算機工作的流程,在程式寫好之後,計算機就會按照,程式設計師定義好流程在執行。其實很多時候,乙個程式的好壞,在於乙...

關於血液關於軟體

1 自然沉降法 將血袋垂直吊掛於4 2 冰箱內,使紅細胞自然下沉1 3d,或將血袋呈70 80 角立於冰箱,需用時,用一次性分漿器分出血漿,制得濃縮紅細胞。2 洗滌法 一般用生理鹽水反覆洗滌3 6次。經洗滌的紅細胞,除白細胞和血小板減少外,血漿蛋白也極少,紅細胞中殘存的血漿蛋白含量約為原總蛋白的1 ...

關於冷漠,關於愛情

我不知道為什麼今天又莫名其妙開始思考愛情這件事,隨之就解決了我一直無法面對冷漠這件事 被冷漠是我始終無法消化的一件事,每當遇見冷漠時,我總會覺得就像一團火把自己燒得面目全非,但對方卻毫無傷害。但我突然懂了,遇到冷漠時,體面的離開即可 在乎你的人一定會在你離開後,找到你跟你解釋為什麼 連解釋都來不及,...