You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

并行请求双应用时部分响应失败的HTTP状态码选择咨询

并行依赖部分失败时的HTTP状态码选择

核心原则

HTTP状态码描述的是当前服务对客户端请求的整体处理结果,而非单个上游依赖的状态,所以选择的关键在于:部分失败是否导致当前服务无法向客户端提供有效响应。

分场景选择状态码

场景1:部分失败不影响核心响应(非关键数据缺失)

如果其中一个依赖的失败仅导致非核心数据丢失,客户端仍能拿到可用的核心结果,应该返回 200 OK。

  • 必须在响应体中明确标记异常:比如添加errors数组,说明哪个依赖服务失败、失败原因(如"依赖A超时未响应"),让客户端清楚哪些数据是不完整的。

场景2:部分失败导致核心响应不可用(缺一不可的依赖)

这种情况根据失败的性质选择:

  • 临时故障(如依赖超时、暂时宕机):返回 503 Service Unavailable 是合理的,同时建议添加Retry-After响应头,告知客户端预计可重试的时间。
  • 永久性故障(如依赖服务下线、配置错误):更适合返回 502 Bad Gateway,因为你的服务相当于客户端的网关,收到了上游依赖的无效响应,无法生成有效结果。

兜底选择:500 Internal Server Error

如果无法明确归类故障类型,或者依赖失败是未预期的内部错误,可以用500作为兜底,但尽量优先使用更具语义的状态码。

关键实践建议

  • 无论选用哪种状态码,响应体必须包含详细的错误上下文:比如失败的依赖标识、错误类型、是否可重试等,避免仅依赖状态码传递信息。
  • 不要滥用4xx状态码:4xx系列是客户端错误,仅当客户端请求本身有问题时使用,和上游依赖失败无关。

内容的提问来源于stack exchange,提问作者Krishna Pramod

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 13:03:12