200 OK - [GET]:服務(wù)器成功返回用戶請(qǐng)求的數(shù)據(jù)再姑,該操作是冪等的(Idempotent)。
201 CREATED - [POST/PUT/PATCH]:用戶新建或修改數(shù)據(jù)成功找御。
202 Accepted - []:表示一個(gè)請(qǐng)求已經(jīng)進(jìn)入后臺(tái)排隊(duì)(異步任務(wù))
204 NO CONTENT - [DELETE]:用戶刪除數(shù)據(jù)成功元镀。
400 INVALID REQUEST - [POST/PUT/PATCH]:用戶發(fā)出的請(qǐng)求有錯(cuò)誤,服務(wù)器沒(méi)有進(jìn)行新建或修改數(shù)據(jù)的操作霎桅,該操作是冪等的凹联。
401 Unauthorized - []:表示用戶沒(méi)有權(quán)限(令牌、用戶名哆档、密碼錯(cuò)誤)蔽挠。
403 Forbidden - [] 表示用戶得到授權(quán)(與401錯(cuò)誤相對(duì)),但是訪問(wèn)是被禁止的瓜浸。
404 NOT FOUND - []:用戶發(fā)出的請(qǐng)求針對(duì)的是不存在的記錄澳淑,服務(wù)器沒(méi)有進(jìn)行操作,該操作是冪等的插佛。
406 Not Acceptable - [GET]:用戶請(qǐng)求的格式不可得(比如用戶請(qǐng)求JSON格式杠巡,但是只有XML格式)。
410 Gone -[GET]:用戶請(qǐng)求的資源被永久刪除雇寇,且不會(huì)再得到的氢拥。
422 Unprocesable entity - [POST/PUT/PATCH] 當(dāng)創(chuàng)建一個(gè)對(duì)象時(shí)蚌铜,發(fā)生一個(gè)驗(yàn)證錯(cuò)誤。
500 INTERNAL SERVER ERROR - [*]:服務(wù)器發(fā)生錯(cuò)誤嫩海,用戶將無(wú)法判斷發(fā)出的請(qǐng)求是否成功冬殃。
200這個(gè)最容易理解,就是正確的請(qǐng)求返回正確的結(jié)果叁怪,如果不想細(xì)分正確的請(qǐng)求結(jié)果都可以直接返回200审葬。
201表示資源被正確的創(chuàng)建。比如說(shuō)奕谭,我們 POST 用戶名涣觉、密碼正確創(chuàng)建了一個(gè)用戶就可以返回 201。
202請(qǐng)求是正確的血柳,但是結(jié)果正在處理中官册,沒(méi)法返回對(duì)應(yīng)的結(jié)果。比如說(shuō)难捌,我們請(qǐng)求一個(gè)需要大量計(jì)算的結(jié)果攀隔,但是并沒(méi)有計(jì)算結(jié)束時(shí),可以返回這個(gè)栖榨,這時(shí)候客戶端可以通過(guò)輪詢等機(jī)制繼續(xù)請(qǐng)求。
203請(qǐng)求的代理服務(wù)器修改了源服務(wù)器返回的 200 中的內(nèi)容明刷,一般用不到婴栽。比如說(shuō),我們通過(guò)代理服務(wù)器向服務(wù)器 A 請(qǐng)求用戶信息辈末,服務(wù)器 A 正常響應(yīng)愚争,但代理服務(wù)器命中了緩存并返回了自己的緩存內(nèi)容,這時(shí)候它返回 203 告訴我們這部分信息不一定是最新的挤聘,我們可以自行判斷并處理轰枝。
204請(qǐng)求正確,但是沒(méi)有需要返回的內(nèi)容组去。比如說(shuō)鞍陨,我們請(qǐng)求刪除某個(gè)用戶,刪除成功可以返回 204从隆。205類似 204诚撵,但是要求請(qǐng)求者重置視圖,一般也用不到键闺。比如說(shuō)寿烟,我們請(qǐng)求刪除某個(gè)用戶,服務(wù)器返回 205 的話辛燥,我們就刷新現(xiàn)在的用戶列表筛武。
206請(qǐng)求成功艺演,但根據(jù)請(qǐng)求頭只返回了部分內(nèi)容暑刃。比如說(shuō),我們下載一部片,共有 10 部分介汹,我們把請(qǐng)求也分成了 10 次(防止一次請(qǐng)求過(guò)大),這時(shí)候服務(wù)器就可以返回 206 并在其頭部告訴我們這是哪一部分咱娶,然后再根據(jù)這個(gè)信息進(jìn)行拼裝躯肌。
300請(qǐng)求成功,但結(jié)果有多種選擇炉擅。比如說(shuō)辉懒,我們下載一部片,服務(wù)器有 avi谍失、mp4 等格式眶俩,這時(shí)候可以返回 300,并在 body 里告知有哪些格式快鱼,然后用戶可以根據(jù)這些格式再次請(qǐng)求颠印。
301請(qǐng)求成功,但是資源被永久轉(zhuǎn)移抹竹。比如說(shuō)线罕,我們要下載葫蘆娃,但是由于舊的存儲(chǔ)服務(wù)商漲價(jià)了窃判,現(xiàn)在要使用新的存儲(chǔ)服務(wù)了钞楼,要去新地址下載,這時(shí)候可以返回 301袄琳,并在 header 的 Location 中告知新的地址询件,以后也應(yīng)當(dāng)?shù)竭@個(gè)地址下載。
302請(qǐng)求成功唆樊,但是資源被臨時(shí)轉(zhuǎn)移了宛琅。和 301 不同的是,除非是 HEAD 請(qǐng)求逗旁,否則新地址的信息應(yīng)當(dāng)在 body 中返回嘿辟,并且資源只是臨時(shí)轉(zhuǎn)移,以后不應(yīng)當(dāng)通過(guò)新地址來(lái)下載片效。303類似 302仓洼,但要求使用 GET 來(lái)訪問(wèn)新的地址來(lái)獲取資源。
304請(qǐng)求的資源并沒(méi)有被修改過(guò)堤舒。比如說(shuō)色建,我們發(fā)送請(qǐng)求想看看 5.20 后的情侶信息,服務(wù)器查詢沒(méi)有新的情侶信息產(chǎn)生舌缤,這時(shí)候可以返回 304箕戳,然后客戶端可以繼續(xù)用舊的數(shù)據(jù)某残。
305請(qǐng)求的資源必須通過(guò)代理訪問(wèn)。比如說(shuō)陵吸,我們想請(qǐng)求服務(wù)器 A 上新的 iPhone 的信息玻墅,但是需要通過(guò)代理服務(wù)器才能訪問(wèn),如果直接請(qǐng)求了服務(wù)器 A壮虫,沒(méi)有經(jīng)過(guò)代理服務(wù)器澳厢,這時(shí)候服務(wù)器 A 就可以返回 305 從而告訴我們應(yīng)當(dāng)訪問(wèn)代理服務(wù)器。306不用了囚似。307類似 302剩拢,但要求使用原有的請(qǐng)求方式來(lái)通過(guò)新地址獲取資源。308類似 301饶唤,但要求使用原有的請(qǐng)求方式來(lái)通過(guò)新地址獲取資源徐伐。// 分割線
400請(qǐng)求出現(xiàn)錯(cuò)誤,比如請(qǐng)求頭不對(duì)等募狂,所有不想明確區(qū)分的客戶端請(qǐng)求出錯(cuò)都可以返回 400办素。401沒(méi)有提供認(rèn)證信息。比如說(shuō)祸穷,請(qǐng)求的時(shí)候沒(méi)有帶上 Token 等性穿。
402為將來(lái)的需要所保留的狀態(tài)碼。403請(qǐng)求的資源不允許訪問(wèn)雷滚。比如說(shuō)需曾,你使用普通用戶的 Token 去請(qǐng)求管理員才能訪問(wèn)的資源。
404請(qǐng)求的內(nèi)容不存在揭措。
405請(qǐng)求的方法不允許使用。比如說(shuō)刻蚯,服務(wù)器只實(shí)現(xiàn)了 PATCH 了局部更新資源绊含,并沒(méi)有實(shí)現(xiàn) PUT 來(lái)替換資源,而我們使用了 PUT炊汹,這時(shí)候服務(wù)器可以返回 405 來(lái)告知并沒(méi)有實(shí)現(xiàn)對(duì) PUT 的相關(guān)處理躬充。406請(qǐng)求的資源并不符合要求。比如說(shuō)讨便,我們 header 里請(qǐng)求 JSON 格式的數(shù)據(jù)充甚,但是服務(wù)器只有 XML 格式的數(shù)據(jù),這時(shí)候可以返回 406 告知霸褒。407類似 401伴找,但是要求必須去同代理服務(wù)器進(jìn)行認(rèn)證。
408客戶端請(qǐng)求超時(shí)废菱。我們想 POST 創(chuàng)建一個(gè)用戶技矮,雖然建立了連接抖誉,但是網(wǎng)絡(luò)不好,服務(wù)器在規(guī)定時(shí)間內(nèi)沒(méi)有得到我們的請(qǐng)求信息衰倦,這時(shí)候服務(wù)器可以返回 408 告訴我們超時(shí)了袒炉。然后我們可以重新發(fā)送請(qǐng)求。409請(qǐng)求沖突樊零。比如說(shuō)我磁,服務(wù)器要求不同用戶不能重名,服務(wù)器已經(jīng)有了一個(gè)名叫小偉的用戶驻襟,這時(shí)候我們又想創(chuàng)建一個(gè)名叫小偉的用戶夺艰,服務(wù)器可以返回 409,告訴我們沖突了塑悼,也可以在 body 中明確告知是什么沖突了劲适。410請(qǐng)求資源曾經(jīng)存在,但現(xiàn)在不存在了厢蒜。比如說(shuō)霞势,我們下載葫蘆娃,但是因?yàn)榘鏅?quán)被刪了斑鸦,下載不了了愕贡,這時(shí)候服務(wù)器返回 410,告訴我們洗洗早點(diǎn)睡巷屿。411沒(méi)有提供請(qǐng)求資源的長(zhǎng)度固以。比如說(shuō),我們下載葫蘆娃嘱巾,服務(wù)器只允許我們分部分下載憨琳,我們?nèi)绻桓嬖V服務(wù)器我們要下載哪部分,服務(wù)器就返回 411 警告我們旬昭。412請(qǐng)求的資源不符合請(qǐng)求頭中的 IF-* 的某些條件篙螟。比如說(shuō),我們下載葫蘆娃问拘,然后在請(qǐng)求頭告知服務(wù)器要 5.20 后更新過(guò)的遍略,服務(wù)器沒(méi)有,于是返回了 412骤坐。413請(qǐng)求體過(guò)大绪杏。比如說(shuō),服務(wù)器要求上傳文件不能超過(guò) 5M纽绍,但是我們 POST 了 10M蕾久,這時(shí)候就返回 413。
414請(qǐng)求的 URI 太長(zhǎng)了拌夏。比如說(shuō)腔彰,我們提供了太多的 Query 參數(shù)叫编,以至于超過(guò)了服務(wù)器的限制,這時(shí)候可以返回 414霹抛。415不支持的媒體類型搓逾。比如說(shuō),我們上傳了一張七娃的 GIF 動(dòng)圖杯拐,而服務(wù)器只允許你上傳 PNG 圖片霞篡,這時(shí)候就返回 415。416請(qǐng)求的區(qū)間無(wú)效端逼。比如說(shuō)朗兵,我們分部分下載時(shí)請(qǐng)求葫蘆娃的 10 分鐘到 12 分鐘的內(nèi)容,但是這部葫蘆娃只有 1 分鐘的內(nèi)容顶滩,這時(shí)候就返回 416余掖。417預(yù)期錯(cuò)誤。指服務(wù)器沒(méi)法滿足我們?cè)谡?qǐng)求頭里的 Expect 相關(guān)的信息礁鲁。418我是個(gè)茶壺盐欺。這是一個(gè)愚人節(jié)的玩笑,這個(gè)狀態(tài)碼就是用來(lái)搞笑的仅醇。// 分割線
500服務(wù)器錯(cuò)誤冗美。沒(méi)法明確定義的服務(wù)器錯(cuò)誤都可以返回這個(gè)。501請(qǐng)求還沒(méi)有被實(shí)現(xiàn)析二。比如說(shuō)粉洼,我們請(qǐng)求一個(gè)接口來(lái)自動(dòng)拒絕項(xiàng)目經(jīng)理的要求,但是這個(gè)接口只是美好的想象叶摄,并沒(méi)有被實(shí)現(xiàn)属韧,這時(shí)候可以返回 501。502網(wǎng)關(guān)錯(cuò)誤蛤吓。比如說(shuō)宵喂,我們向服務(wù)器 A 請(qǐng)求下載葫蘆娃,但是 A 其實(shí)只是一個(gè)代理服務(wù)器柱衔,他得向 B 請(qǐng)求葫蘆娃樊破,但是不知道為啥 B 不理他或者給他錯(cuò)誤愉棱,這時(shí)候哦可以 A 返回 502 用來(lái)表示 B 這家伙傲嬌了唆铐。503服務(wù)暫時(shí)不可用。比如說(shuō)奔滑,服務(wù)器正好在更新代碼重啟艾岂。504類似 502,但是這時(shí)候是 B 不理 A朋其,超時(shí)了 王浴。505請(qǐng)求的 HTTP 版本不支持脆炎。比如說(shuō),現(xiàn)在強(qiáng)行根據(jù) HTTP 1000 來(lái)請(qǐng)求氓辣。