上游把错误包在 200 响应里,body 里写 code: 500。

问题:

  1. 客户端 HTTP 层看不到错误,重试逻辑失效
  2. 监控统计的成功率永远是 100%
  3. 日志里看不出异常

处理:

  1. 适配层解包,把业务错误映射成 HTTP 状态码
  2. 监控按业务错误率统计,不只看 HTTP
  3. 日志里记录业务 code

自己设计接口时别这么干。HTTP 状态码就是用来表达结果的,包一层只会让所有下游都难受。

这个坑对接过第三方支付的人应该都熟。

主楼