在 Web 开发中,前后端交互和接口设计离不开 HTTP 状态码。合理选择状态码,不仅能让前端快速识别问题,还能帮助运维和测试人员定位错误。本文将结合常见的业务场景,总结对应的 HTTP 状态码使用规范。
一、什么是 HTTP 状态码?
HTTP 状态码(HTTP Status Code)是服务器对客户端请求的响应标识。
它由 三位数字组成,第一位数字决定响应的类别:
-
1xx:信息性(已接收请求,继续处理)
-
2xx:成功类(请求被成功接收并处理)
-
3xx:重定向(需要进一步操作以完成请求)
-
4xx:客户端错误(请求有误)
-
5xx:服务器错误(请求正确,但服务器处理失败)
二、常见业务场景与推荐状态码
1. 无权限(权限不足)
-
401 Unauthorized:未认证,例如用户未登录、Token 过期。
-
403 Forbidden:已认证,但没有访问该资源的权限。
👉 举例:
-
未登录访问用户资料 → 401
-
普通用户访问管理员功能 → 403
2. 参数错误
-
400 Bad Request:请求参数错误或缺少必填项。
-
422 Unprocessable Entity:语义错误,参数格式正确但内容非法,例如手机号格式错误。
👉 举例:
-
API 传参缺少
id→ 400 -
邮箱格式错误 → 422
3. 数据不存在
-
404 Not Found:资源不存在或 ID 无效。
-
204 No Content:请求成功,但没有数据返回。
👉 举例:
-
查询一个不存在的文章 ID → 404
-
请求文章列表但数据库为空 → 204
4. 页面不存在
-
404 Not Found:请求的页面或接口路径不存在。
👉 举例:
-
输入错误的 URL 路径
/abc→ 404
5. 状态错误(业务逻辑不符合)
-
409 Conflict:资源冲突,例如重复提交、订单状态冲突。
-
423 Locked:资源被锁定,不可操作。
-
400 Bad Request:业务状态错误时也常用。
👉 举例:
-
已支付的订单再次支付 → 409
-
文件被锁定无法下载 → 423
6. 服务器错误
-
500 Internal Server Error:通用型服务端错误。
-
502 Bad Gateway:网关错误,通常是代理服务器无法获得有效响应。
-
503 Service Unavailable:服务器暂时超载或维护。
三、推荐返回状态码规范表
| 场景 | 状态码 | 含义说明 |
|---|---|---|
| 请求成功 | 200 | 请求处理成功 |
| 成功但无数据 | 204 | 请求成功,但无返回内容 |
| 未登录/认证失败 | 401 | 需要认证或 Token 过期 |
| 无权限 | 403 | 已认证但无权访问 |
| 参数缺失/错误 | 400 | 请求无效,参数错误 |
| 参数语义错误 | 422 | 参数格式正确但内容非法 |
| 数据不存在 | 404 | 资源未找到 |
| 页面不存在 | 404 | 请求页面或接口不存在 |
| 资源冲突 | 409 | 状态冲突或重复操作 |
| 资源被锁定 | 423 | 资源被占用或锁定 |
| 服务器错误 | 500 | 服务端未知错误 |
| 网关错误 | 502 | 代理/网关无效响应 |
| 服务不可用 | 503 | 服务器过载或维护 |
四、总结
合理使用 HTTP 状态码,可以让接口语义更加清晰,前端和后端的协作更高效。
-
4xx 用于客户端错误:提醒调用方修改请求。
-
5xx 用于服务器错误:提醒开发者排查后端问题。
-
2xx 用于成功请求:保持返回结果的统一性。
建议在团队中制定一份统一的 状态码规范表,并在 API 文档中明确说明,这样可以大幅减少沟通成本。
2025-09-08 17:08:12,若文章内容或图片失效,请留言或联系站长反馈!










暂无评论内容