RunToolz iconRunToolz
Welcome to RunToolz!
HTTPAPI網頁開發

HTTP 狀態碼:它們的意義以及何時使用它們

HTTP 狀態碼遠不止 200 和 404。全面解析 1xx 到 5xx 各類狀態碼的含義與使用場景,幫助 API 開發者正確處理請求回應和錯誤除錯。

RunToolz Team2026年1月30日4 min read

你的 API 回傳 200。回應主體說 {"error": "Not found"}

這是錯的。狀態碼的存在是有原因的。正確使用它們。

五個類別

1xx — 資訊性。實務上很少見。

2xx — 成功。請求有效。

3xx — 重新導向。到別的地方去。

4xx — 客戶端錯誤。你做錯了什麼。

5xx — 伺服器錯誤。我們做錯了什麼。

想親自試試嗎?查詢狀態碼

你實際會使用的代碼

成功 (2xx)

200 OK — 標準成功。用於回傳資料的 GET 請求。

201 Created — 資源已創建。用於創建東西的成功 POST 之後。

204 No Content — 成功,但沒有東西要回傳。用於不回傳資料的 DELETE 或更新。

客戶端錯誤 (4xx)

400 Bad Request — 格式錯誤的請求。無效的 JSON、缺少必填欄位、錯誤的資料類型。

401 Unauthorized — 沒有驗證。使用者需要登入。

403 Forbidden — 已驗證但不允許。使用者存在但缺乏權限。

404 Not Found — 資源不存在。經典。

409 Conflict — 請求與當前狀態衝突。重複的使用者名稱、版本不匹配。

422 Unprocessable Entity — 語法正確但語義錯誤。有效的 JSON 但違反業務規則。

429 Too Many Requests — 速率限制。慢下來。

伺服器錯誤 (5xx)

500 Internal Server Error — 通用伺服器故障。某些東西崩潰了。

502 Bad Gateway — 上游伺服器失敗。你的伺服器正常,但它依賴的東西不正常。

503 Service Unavailable — 暫時關閉。維護或過載。

504 Gateway Timeout — 上游伺服器沒有及時回應。

常見錯誤

主體中有錯誤的 200。 如果是錯誤,使用錯誤狀態碼。不要讓客戶端解析主體來知道是否成功。

驗證錯誤用 500。 使用者提交了錯誤資料?那是 400 或 422,不是 500。伺服器沒壞——請求壞了。

401 vs 403 混淆。 401 表示「你是誰?」403 表示「我知道你是誰,但不行。」

所有東西都用 404。「找不到」並不總是正確的答案。錯誤的方法?405。速率限制?429。

設計 API

要具體。客戶端可以智慧地處理特定錯誤。通用錯誤意味著通用處理。

在主體中包含錯誤詳情:

{
  "error": "validation_failed",
  "message": "Email format is invalid",
  "field": "email"
}

狀態碼說明問題的類別。主體具體解釋。

作為客戶端處理狀態碼

2xx — 解析回應,正常進行。

4xx — 你的錯。記錄,向使用者顯示,修正請求。

5xx — 伺服器的錯。可能以退避重試。可能警報。

3xx — 自動跟隨重新導向(大多數 HTTP 客戶端都這樣做)。

不要只檢查 200。檢查成功 (2xx) 並適當地處理其他情況。


狀態碼是溝通。正確使用它們,API 變得自我記錄。誤用它們,除錯變成猜測遊戲。