跳至正文

HTTP Status Code 指南

搜索所有 HTTP 状态码并查看说明的工具。

Loading...

主要功能

  • 完整状态码:包含 60 多个所有 HTTP 状态码
  • 分类筛选:按 1xx、2xx、3xx、4xx、5xx 筛选
  • 实时搜索:按代码编号、名称、说明搜索
  • 详细说明:每个状态码的含义和使用示例
  • 颜色区分:按分类用颜色一目了然地展示

状态码分类

1xx (Informational) - 信息响应

已收到请求,继续处理中。一般不常用。

2xx (Success) - 成功

请求已成功处理。最常见的成功响应。

  • 200 OK:最常见的成功响应
  • 201 Created:成功创建新资源
  • 204 No Content:成功但无响应正文

3xx (Redirection) - 重定向

需要额外操作来完成请求。

  • 301 Moved Permanently:永久移动
  • 302 Found:临时移动
  • 304 Not Modified:可使用缓存

4xx (Client Error) - 客户端错误

请求有错误。客户端需要修改。

  • 400 Bad Request:错误的请求
  • 401 Unauthorized:需要身份验证
  • 403 Forbidden:无权限
  • 404 Not Found:找不到资源
  • 429 Too Many Requests:超过请求限制

5xx (Server Error) - 服务器错误

服务器无法处理请求。

  • 500 Internal Server Error:服务器内部错误
  • 502 Bad Gateway:网关错误
  • 503 Service Unavailable:服务不可用

常用状态码详解

200 OK

GET /api/users/123
Response: 200 OK
{
"id": 123,
"name": "张三"
}

最常见的成功响应。请求已成功处理并返回结果。

201 Created

POST /api/users
Response: 201 Created
Location: /api/users/456
{
"id": 456,
"name": "李四"
}

成功创建新资源。通常在 POST 请求后返回。

204 No Content

DELETE /api/users/123
Response: 204 No Content

成功但无内容返回。通常用于 DELETE 或 PUT 请求。

400 Bad Request

POST /api/users
{
"name": "" // 名称为空
}
Response: 400 Bad Request
{
"error": "名称是必填项"
}

请求格式错误或缺少必需参数。

401 Unauthorized

GET /api/users/me
Response: 401 Unauthorized
{
"error": "需要身份验证"
}

需要身份验证。通常需要登录或提供 token。

403 Forbidden

DELETE /api/users/admin
Response: 403 Forbidden
{
"error": "无权限执行此操作"
}

已认证但无权限。与 401 不同,即使提供凭据也无法访问。

404 Not Found

GET /api/users/999999
Response: 404 Not Found
{
"error": "用户不存在"
}

找不到请求的资源。

429 Too Many Requests

GET /api/data
Response: 429 Too Many Requests
Retry-After: 60
{
"error": "请求过多,请稍后重试"
}

超过速率限制。需要等待后重试。

500 Internal Server Error

GET /api/users
Response: 500 Internal Server Error
{
"error": "服务器错误"
}

服务器内部错误。通常是代码错误或数据库问题。

502 Bad Gateway

GET /api/data
Response: 502 Bad Gateway
{
"error": "上游服务器错误"
}

作为网关或代理的服务器从上游服务器收到无效响应。

503 Service Unavailable

GET /api/users
Response: 503 Service Unavailable
Retry-After: 120
{
"error": "服务暂时不可用"
}

服务器暂时无法处理请求。通常是维护或过载。

REST API 中的使用

GET 请求

200 OK        - 成功获取资源
404 Not Found - 资源不存在

POST 请求

201 Created     - 成功创建资源
400 Bad Request - 请求数据错误
409 Conflict - 资源已存在

PUT/PATCH 请求

200 OK        - 成功更新并返回资源
204 No Content - 成功更新但无返回
404 Not Found - 要更新的资源不存在

DELETE 请求

204 No Content - 成功删除
404 Not Found - 要删除的资源不存在

状态码选择指南

成功时

  • 获取数据 → 200 OK
  • 创建资源 → 201 Created
  • 更新/删除 → 204 No Content200 OK

客户端错误时

  • 请求格式错误 → 400 Bad Request
  • 未认证 → 401 Unauthorized
  • 无权限 → 403 Forbidden
  • 资源不存在 → 404 Not Found
  • 请求冲突 → 409 Conflict
  • 请求过多 → 429 Too Many Requests

服务器错误时

  • 一般错误 → 500 Internal Server Error
  • 上游错误 → 502 Bad Gateway
  • 服务不可用 → 503 Service Unavailable

使用场景

  1. API 开发:选择适当的状态码
  2. 调试:理解错误状态码的含义
  3. 学习:理解 HTTP 协议
  4. 文档编写:状态码参考

最佳实践

1. 使用标准状态码

// ✅ 好
res.status(404).json({ error: '用户不存在' });

// ❌ 差
res.status(200).json({ error: true, message: '用户不存在' });

2. 提供清晰的错误消息

// ✅ 好
res.status(400).json({
error: '验证失败',
details: {
name: '名称是必填项',
email: '邮箱格式无效'
}
});

// ❌ 差
res.status(400).json({ error: 'Error' });

3. 适当使用重定向

// 永久移动
res.status(301).redirect('/new-url');

// 临时移动
res.status(302).redirect('/temp-url');

4. 实现速率限制

app.use((req, res, next) => {
if (rateLimitExceeded) {
return res.status(429).json({
error: '请求过多',
retryAfter: 60
});
}
next();
});

常见问题

问:401 和 403 有什么区别?

  • 401 Unauthorized:未认证,需要登录
  • 403 Forbidden:已认证但无权限

问:400 和 422 有什么区别?

  • 400 Bad Request:请求格式错误
  • 422 Unprocessable Entity:请求格式正确但数据无效

问:应该何时使用 204?

删除或更新成功但无需返回数据时使用 204 No Content。

问:所有错误都应该是 200 OK 吗?

不是。应该使用适当的错误状态码(4xx、5xx)。有些 API 错误地对所有响应使用 200。

相关工具

💬 这个工具对您有帮助吗?

如果您觉得 HTTP 状态码指南有用,请分享给需要的朋友!我们持续改进工具以提供更好的服务。

隐私保护

此工具完全在客户端运行。您输入的数据不会发送到服务器,仅在浏览器中处理。