HTTP 状态码

状态码按 2xx/3xx/4xx/5xx 表达结果:400 参数问题、401 未认证、403 无权限、404 不存在、409 冲突、422 语义错误、429 限流、503 暂不可用。

状态

状态码含义常见误用
400请求语法或参数错误把业务校验失败一律归为 400
401/403未认证 / 无权限混淆两者,客户端无法区分引导
404/410不存在 / 已删除权限不足时用 404 掩盖
409状态冲突并发写冲突未返回 409
429请求过多不携带 Retry-After
4xx 表示客户端需修改请求,5xx 表示服务端问题;监控告警通常只对 5xx 与 429 设阈值。

易错点

  • 所有错误一律返回 200 加错误码,网关与监控失去意义
  • 对不存在资源返回 500,掩盖了调用方的参数问题

数据来源与参考

  • RFC 9110 HTTP Semantics
  • RFC 6585:Additional HTTP Status Codes
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌