LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

用了這么久HTTP,這些狀態(tài)碼的妙用你都知道嗎?

admin
2025年7月7日 21:47 本文熱度 665

平時(shí)開發(fā)中,大家對(duì)200成功、404未找到、500服務(wù)器錯(cuò)誤這些狀態(tài)碼都很熟悉,但HTTP其實(shí)定義了幾十個(gè)狀態(tài)碼,很多都非常有用卻被忽略了。有些能解決實(shí)際問題,有些有著有趣的故事,還有些能讓你的API設(shè)計(jì)更專業(yè)。覺得有用的同學(xué)可以Mark一下。


1. 重定向家族 - 不只是301和302

很多人只知道301永久重定向和302臨時(shí)重定向,但重定向家族其實(shí)很龐大,每個(gè)都有特定的使用場(chǎng)景:

# 301/302 - 瀏覽器可能會(huì)把POST請(qǐng)求改成GET請(qǐng)求# 比如:POST /api/login → 重定向后變成 GET /new-url
# 307 - 臨時(shí)重定向,瀏覽器必須保持原來的請(qǐng)求方法# 比如:POST /api/login → 重定向后仍然是 POST /new-urlHTTP/1.1 307 Temporary RedirectLocation: https://api.example.com/v2/users
# 308 - 永久重定向,瀏覽器必須保持原來的請(qǐng)求方法HTTP/1.1 308 Permanent RedirectLocation: https://secure.example.com/api
# 調(diào)試技巧:使用curl查看重定向鏈curl -I -L https://example.com  # -I只看headers,-L跟隨重定向

調(diào)試技巧:如果你的POST接口重定向后變成了GET請(qǐng)求,說明服務(wù)器用了301/302,應(yīng)該改用307/308。


2. 客戶端錯(cuò)誤的細(xì)分 - 不要什么都400

400家族比你想象的豐富,精確使用狀態(tài)碼能讓前端開發(fā)者快速定位問題:

# 401 - 未認(rèn)證(沒登錄)HTTP/1.1 401 UnauthorizedWWW-Authenticate: Bearer
# 403 - 已認(rèn)證但沒權(quán)限(登錄了但不夠權(quán)限)HTTP/1.1 403 Forbidden
# 409 - 資源沖突(如重復(fù)創(chuàng)建)HTTP/1.1 409 Conflict{  "error""User with this email already exists"}
# 422 - 數(shù)據(jù)格式正確但語義錯(cuò)誤HTTP/1.1 422 Unprocessable Entity{  "errors": {    "age": ["Age must be between 18 and 120"]  }}
# 429 - 請(qǐng)求頻率超限HTTP/1.1 429 Too Many RequestsRetry-After: 60

調(diào)試技巧:看到401先檢查token,403檢查權(quán)限,422檢查業(yè)務(wù)邏輯。


3. 服務(wù)端錯(cuò)誤的分工 - 告訴用戶到底是誰的鍋

500家族能精確告知故障責(zé)任方,便于運(yùn)維和用戶理解:

# 502 - 網(wǎng)關(guān)錯(cuò)誤(上游服務(wù)掛了)HTTP/1.1 502 Bad Gateway
# 503 - 服務(wù)暫時(shí)不可用(維護(hù)中)HTTP/1.1 503 Service UnavailableRetry-After: 3600
# 504 - 網(wǎng)關(guān)超時(shí)(上游服務(wù)響應(yīng)慢)HTTP/1.1 504 Gateway Timeout
# 調(diào)試技巧:使用curl測(cè)試網(wǎng)關(guān)和upstream的連通性curl -w "time_total: %{time_total}s\n" https://api.example.com

調(diào)試技巧:502通常是應(yīng)用崩潰,503是主動(dòng)維護(hù),504是性能問題。


4. 緩存控制神器 - 304和條件請(qǐng)求

304狀態(tài)碼配合條件請(qǐng)求,能大幅減少帶寬使用:

# 客戶端發(fā)送條件請(qǐng)求GET /api/user/123 HTTP/1.1If-None-Match: "abc123"If-Modified-Since: Wed, 21 Oct 2015 07:28:00 GMT
# 服務(wù)器響應(yīng)304(內(nèi)容未變更)HTTP/1.1 304 Not ModifiedETag"abc123"Cache-Control: max-age=3600
# 調(diào)試技巧:檢查ETag和Last-Modifiedcurl -H "If-None-Match: abc123" https://api.example.com/users/1

調(diào)試技巧:頻繁的200響應(yīng)可能說明緩存策略有問題,應(yīng)該多看到304。


5. 內(nèi)容協(xié)商 - 406和415的正確處理

這兩個(gè)狀態(tài)碼經(jīng)常被誤用,理解它們能讓API更健壯:

# 406 - 服務(wù)器無法提供客戶端要求的內(nèi)容格式GET /api/users HTTP/1.1Accept: application/xml
HTTP/1.1 406 Not AcceptableContent-Type: application/json{  "error""Only JSON format is supported",  "supported_formats": ["application/json"]}
# 415 - 客戶端發(fā)送的內(nèi)容格式服務(wù)器不支持POST /api/users HTTP/1.1Content-Type: text/plain
HTTP/1.1 415 Unsupported Media Type{  "error""Content-Type must be application/json"}
# 調(diào)試技巧:檢查Accept和Content-Type頭curl -H "Accept: application/xml" https://api.example.com/userscurl -H "Content-Type: text/xml" -d "<user></user>" https://api.example.com/users


6. 斷點(diǎn)續(xù)傳神器 - 206部分內(nèi)容

下載大文件時(shí)網(wǎng)絡(luò)斷了?206狀態(tài)碼配合Range請(qǐng)求,讓斷點(diǎn)續(xù)傳成為可能:

# 客戶端請(qǐng)求文件的一部分GET /download/largefile.zip HTTP/1.1Range: bytes=1000-2000
# 服務(wù)器返回206和部分內(nèi)容HTTP/1.1 206 Partial ContentContent-Range: bytes 1000-2000/5000Content-Length: 1001
# 實(shí)際應(yīng)用:視頻播放器的拖拽進(jìn)度條# Range: bytes=2048000-  # 從2MB開始到文件末尾

使用場(chǎng)景:視頻網(wǎng)站的進(jìn)度條拖拽、大文件下載的斷點(diǎn)續(xù)傳、移動(dòng)端的流量節(jié)省。


7. 最萌狀態(tài)碼 - 418我是茶壺

這是一個(gè)真實(shí)存在的HTTP狀態(tài)碼,來源于1998年的愚人節(jié)玩笑:

HTTP/1.1 418 I'm a teapot
# RFC 2324規(guī)定:茶壺不能煮咖啡# 當(dāng)你向茶壺發(fā)送煮咖啡請(qǐng)求時(shí),它會(huì)返回這個(gè)狀態(tài)碼

雖然是個(gè)玩笑,但很多網(wǎng)站用它來表示"彩蛋"或特殊情況。比如Google搜索"teapot"時(shí)就會(huì)返回418。

有趣用法:網(wǎng)站彩蛋、API的特殊響應(yīng)、程序員的小幽默。


8. 法律限制 - 451因法律原因不可用

這個(gè)狀態(tài)碼專門用來表示因?yàn)榉稍驘o法提供內(nèi)容:

HTTP/1.1 451 Unavailable For Legal Reasons
# 比如某些內(nèi)容在特定地區(qū)被禁止訪問{  "error""This content is not available in your region",  "reason""Copyright restrictions",  "legal_reference""DMCA takedown notice"}

狀態(tài)碼451來自小說《華氏451度》(紙張燃點(diǎn)),象征著言論審查。

使用場(chǎng)景:地區(qū)版權(quán)限制、政府審查、DMCA刪除請(qǐng)求。


9. 過早請(qǐng)求 - 425別著急

HTTP/2新增的狀態(tài)碼,表示請(qǐng)求太早了,服務(wù)器還沒準(zhǔn)備好:

HTTP/1.1 425 Too Early
# 常見于需要時(shí)間初始化的服務(wù){  "error""Service is still starting up",  "retry_after": 30}

使用場(chǎng)景:服務(wù)重啟期間、緩存預(yù)熱階段、定時(shí)任務(wù)觸發(fā)前。


結(jié)語

HTTP狀態(tài)碼不只是數(shù)字,它們承載著豐富的語義信息和有趣的故事。從實(shí)用的206斷點(diǎn)續(xù)傳,到有趣的418茶壺,再到嚴(yán)肅的451法律限制,每個(gè)狀態(tài)碼都有它存在的意義。正確使用它們,能讓你的API更專業(yè),問題排查更高效。

下次遇到HTTP問題時(shí),不妨從狀態(tài)碼開始入手,說不定能更快找到根本原因!


閱讀原文:原文鏈接


該文章在 2025/7/9 9:10:21 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲(chǔ)管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

黄频国产免费高清视频,久久不卡精品中文字幕一区,激情五月天AV电影在线观看,欧美国产韩国日本一区二区
日韩亚洲欧美中文字幕影音 | 五月六月婷婷中文字幕在线 | 亚洲成AⅤ人影院在线欢看 亚洲成a人片在线天堂 | 亚洲欧美日韩一香蕉 | 日本三级香港三级三级人妇久 | 日韩中文字幕网先锋资源 |