?HTTP 協議中,操作成功后的狀態碼選擇取決于操作類型和響應內容,并非所有非 GET/POST 請求都返回 204。以下是常見 HTTP 方法的成功狀態碼規范:
1. GET
- 200 OK:默認成功狀態碼,表示請求成功且返回了資源內容。
- 206 Partial Content:當請求范圍獲取資源時(如斷點續傳)。
2. POST
- 200 OK:操作后返回數據(如查詢結果)。
- 201 Created:創建了新資源(如創建用戶、上傳文件)。
- 202 Accepted:請求已接受但尚未處理(異步操作)。
- 204 No Content:操作成功但無需返回內容(罕見)。
3. PUT
- 200 OK:更新資源且返回更新后的內容。
- 204 No Content:更新資源但無需返回內容(更常見)。
- 201 Created:如果 PUT 用于創建資源(如冪等創建)。
4. DELETE
- 204 No Content:默認成功狀態碼,表示資源已刪除,無需返回內容。
- 200 OK:當需要返回刪除的詳細信息時(如批量刪除返回成功列表)。
- 202 Accepted:異步刪除(請求已接受但尚未執行)。
5. PATCH
- 200 OK:部分更新資源并返回更新后的內容。
- 204 No Content:部分更新但無需返回內容。
6. HEAD
- 200 OK:僅返回響應頭,不包含內容。
選擇原則
- 是否創建資源:使用?
201 Created
(如 POST/PUT 創建新資源)。 - 是否需要返回內容:
- 需要返回數據 →?
200 OK
- 無需返回內容 →?
204 No Content
- 需要返回數據 →?
- 異步處理:使用?
202 Accepted
(如任務隊列處理)。
常見誤區
- DELETE 必須返回 204:不一定。例如,批量刪除 API 可能返回成功刪除的對象列表,此時用 200 更合適。
- PUT/PATCH 只能返回 204:若操作后需要返回更新后的資源(如更新用戶信息后返回完整用戶對象),應使用 200。
示例對照表
HTTP 方法 | 典型成功狀態碼 | 說明 |
---|---|---|
GET | 200 OK | 返回資源內容 |
POST | 201 Created | 創建新資源 |
PUT | 204 No Content | 更新資源,無需返回內容 |
DELETE | 204 No Content | 刪除資源,無需返回內容 |
PATCH | 200 OK | 部分更新,返回更新后的內容 |
總結
- 204 No Content?適用于操作成功但無需返回內容的場景(如 DELETE、PUT/PATCH 更新后)。
- 200 OK?適用于需要返回響應內容的場景(如 GET、POST 查詢結果)。
- 201 Created?專用于資源創建操作。
在設計 API 時,應根據上述原則選擇合適的狀態碼,以提高接口的一致性和可理解性