标准答案

  1. 200 表示请求成功并通常携带响应体;201 表示创建了新资源,适合同时返回资源表示或 Location;202 表示请求已被受理但尚未完成;204 表示成功但没有响应体。
  2. 400 用于请求格式、参数或业务前置条件不合法;401 表示未完成身份认证或认证凭据无效;403 表示身份已识别但没有访问权限;404 表示目标资源或路由不存在。
  3. 409 用于当前资源状态与请求冲突,例如版本冲突、重复唯一键或不允许的状态迁移;429 表示超过速率或配额,应附带可执行的退避信息。
  4. 500 用于服务端未预期异常或无法满足请求。对于可预期的业务校验、权限或资源状态问题,应返回更具体的 4xx 和稳定错误码。
  5. 状态码之外还应返回机器可读错误码、简短安全的用户提示、请求标识和必要字段错误信息。

题目解析

HTTP 状态码负责通用协议语义,业务错误码负责产品动作和前端分支。二者配合能让调用方决定重试、提示、登录跳转或人工处理。

同一错误不能因为实现位置不同而随机返回 400、409 或 500。稳定的映射规则比状态码数量更重要。

常见误区

  • 所有成功和失败都返回 200,再把真实结果藏在 body 的 code 字段里。
  • 把未登录和无权限都返回 403,导致客户端无法判断是否需要重新认证。
  • 把参数校验、唯一键冲突等预期问题都包装成 500。

作者信息