HTTP 状态码分为 5 类:1xx 信息响应、2xx 成功、3xx 重定向、4xx 客户端错误、5xx 服务器错误。
前后端开发最常用的状态码
状态码 | 名称 | 典型使用场景 |
|---|---|---|
200 | OK | 查询成功、更新成功 |
201 | Created | 创建成功 |
204 | No Content | 删除成功,无需返回数据 |
301 | Moved Permanently | URL 永久变更、SEO 重定向 |
302 | Found | 临时跳转 |
Not Modified | 浏览器缓存命中验证 | |
400 | Bad Request | 请求参数错误 |
401 | Unauthorized | 未登录、认证失败 |
403 | Forbidden | 已认证但无权限 |
404 | Not Found | 接口或资源不存在 |
409 | Conflict | 数据冲突,例如用户名重复 |
422 | Unprocessable Content | 表单数据校验失败 |
429 | Too Many Requests | 请求频率超限 |
500 | Internal Server Error | 未预期的服务器异常 |
502 | Bad Gateway | 反向代理收到无效上游响应 |
503 | Service Unavailable | 服务暂时不可用 |
504 | Gateway Timeout | 上游服务响应超时 |
容易混淆的状态码
401vs403:401表示未通过身份认证;403表示服务器拒绝访问,通常是权限不足。200vs201:200表示请求成功;201特别表示请求成功并创建了资源。301vs302:301是永久重定向;302是临时重定向。302vs307:307明确保留原请求方法;302在部分客户端中可能将 POST 改为 GET。400vs422:400常用于请求格式或参数问题;422常用于请求格式正确但数据语义校验失败。502vs504:502是上游响应无效;504是等待上游响应超时。