常见 HTTP 方法的成功状态码200,204,202,201
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 时,应根据上述原则选择合适的状态码,以提高接口的一致性和可理解性