标准答案

  1. HTTP 状态码表达通用协议结果,例如认证失败、资源不存在、冲突、限流或服务端异常。
  2. 业务错误码表达稳定且可枚举的业务原因,例如订单状态不允许取消、库存不足或幂等键冲突,客户端可据此决定交互分支。
  3. 对用户返回简短、安全、可执行的提示;字段校验错误可返回字段名和规则,但不要返回 SQL、堆栈、密码或下游地址。
  4. 内部日志和追踪记录请求标识、调用链、异常类型、依赖名称、耗时和安全脱敏后的上下文,供工程人员定位。
  5. 错误映射应集中管理并有测试,确保同一种领域错误在不同入口返回一致的状态码和错误码。

题目解析

错误响应是 API 契约的一部分。错误码随意变化会让客户端的重试、跳转和提示逻辑失效。

可定位不等于把所有异常原样透出。把 requestId 返回给用户并在内部关联日志,通常比暴露堆栈更安全有效。

常见误区

  • 用异常类名、数据库错误文本或堆栈作为公开错误信息。
  • 所有业务失败都用同一个 code,导致客户端只能按文案判断。
  • 只设计前端提示,没有保留可关联日志和链路的请求标识。

作者信息