Skip to content
utility2026-07-253 分钟阅读

什么是 HTTP 状态码

HTTP 状态码(HTTP Status Code)是服务器对客户端请求的响应状态标识。每个 HTTP 响应都包含一个三位数字的状态码,告诉客户端请求的结果是成功、失败还是需要进一步操作。

状态码分类

1xx:信息性状态码

表示请求已接收,服务器需要进一步处理。

| 状态码 | 名称 | 说明 | |--------|------|------| | 100 | Continue | 服务器已接收请求头,客户端应继续发送请求体 | | 101 | Switching Protocols | 服务器同意切换协议(如 WebSocket 升级) | | 102 | Processing | 服务器正在处理请求(WebDAV) |

2xx:成功状态码

表示请求被成功接收、理解和处理。

| 状态码 | 名称 | 说明 | |--------|------|------| | 200 | OK | 请求成功(最常用) | | 201 | Created | 请求成功且服务器创建了新资源(POST 成功) | | 202 | Accepted | 请求已接受但尚未处理(异步操作) | | 204 | No Content | 请求成功,但无返回内容(DELETE 成功) | | 206 | Partial Content | 服务器只返回了部分内容(断点续传) |

3xx:重定向状态码

表示需要客户端进一步操作才能完成请求。

| 状态码 | 名称 | 说明 | |--------|------|------| | 301 | Moved Permanently | 资源已永久移动到新 URL(SEO 友好) | | 302 | Found | 资源临时移动到新 URL | | 304 | Not Modified | 资源未修改,可使用缓存 | | 307 | Temporary Redirect | 临时重定向,保持请求方法不变 | | 308 | Permanent Redirect | 永久重定向,保持请求方法不变 |

4xx:客户端错误状态码

表示客户端发送的请求有问题。

| 状态码 | 名称 | 说明 | |--------|------|------| | 400 | Bad Request | 请求格式错误(参数缺失、JSON 解析失败) | | 401 | Unauthorized | 未认证(需要登录) | | 403 | Forbidden | 已认证但无权限访问 | | 404 | Not Found | 资源不存在(最经典的错误) | | 405 | Method Not Allowed | 请求方法不被允许(如 GET 写入资源) | | 409 | Conflict | 资源冲突(如创建已存在的资源) | | 413 | Payload Too Large | 请求体过大 | | 422 | Unprocessable Entity | 请求格式正确但语义错误(参数校验失败) | | 429 | Too Many Requests | 请求过于频繁(限流) |

5xx:服务器错误状态码

表示服务器内部出错。

| 状态码 | 名称 | 说明 | |--------|------|------| | 500 | Internal Server Error | 服务器内部错误(通用错误) | | 502 | Bad Gateway | 网关/代理收到无效响应 | | 503 | Service Unavailable | 服务器暂时不可用(过载或维护) | | 504 | Gateway Timeout | 网关/代理超时 |

如何使用 HTTP 状态码查询工具

使用 DevToolkit Pro 的 HTTP 状态码工具

  1. 输入状态码数字(如 404
  2. 工具显示该状态码的名称、分类和详细说明
  3. 也可按关键词搜索(如 "not found")
  4. 提供对应的使用场景和代码示例

API 开发中的状态码最佳实践

RESTful API 状态码规范

// GET /users/123
// 成功
200 OK → { "id": 123, "name": "Alice" }
// 未找到
404 Not Found → { "error": "User not found" }

// POST /users
// 成功创建
201 Created → { "id": 124, "name": "Bob" }
// 参数校验失败
422 Unprocessable Entity → { "errors": ["Email is required"] }

// DELETE /users/123
// 成功删除
204 No Content → (空响应体)

// PUT /users/123
// 未认证
401 Unauthorized → { "error": "Token expired" }
// 无权限
403 Forbidden → { "error": "Insufficient permissions" }

避免滥用 200

所有响应都返回 200 OK 是常见反模式:

// ❌ 错误做法
res.status(200).json({ success: false, error: "User not found" });

// ✅ 正确做法
res.status(404).json({ error: "User not found" });

FAQ

404 和 410 有什么区别?

404 表示资源可能存在但当前未找到(可能是临时的)。410 表示资源曾经存在但已被永久删除,客户端不应再请求。

500 和 503 怎么选?

500 是服务器内部错误(代码 bug、未捕获异常)。503 是服务暂时不可用(过载、维护、依赖服务故障)。

429 响应应该包含什么信息?

应该包含 Retry-After 头告诉客户端多久后可以重试。也可以使用 X-RateLimit-Reset 头返回重置时间戳。


本文由 DevToolkit Pro 提供。更多开发者工具请访问 首页


ad