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

资源暂不可用时,Pyramid API应返回400还是503 HTTP状态码?

状态码选择建议:400 vs 503 vs 202

首先明确结论:不要用400,503更合适,甚至202是更贴合场景的选择,具体分析如下:

为什么400不合适?

400 Bad Request的核心语义是用户的请求本身存在错误——比如缺少必填参数、参数格式无效、请求体解析失败等情况。但你的场景里,用户的请求完全合法,只是对应的报告还在生成过程中,返回400会误导用户,让他们误以为自己的请求有问题,这不符合状态码的语义规范。

503的适用性

503 Service Unavailable表示服务器暂时无法处理请求,通常用于服务器过载、维护的场景,但也可以延伸到“所需资源尚未准备好”的情况。如果选择返回503,建议:

  • 在响应体中明确说明原因:{"error": "报告正在生成中,暂时无法获取"}
  • 添加Retry-After响应头,告诉用户大致的重试时间(比如Retry-After: 60,表示1分钟后重试)

更贴合的选择:202 Accepted

202 Accepted的语义是服务器已接受请求,但尚未完成处理,完美匹配你这种异步生成报告的场景。返回202时可以:

  • 在响应体中告知用户报告的状态:{"status": "报告生成中,请稍后重试"}
  • 同样添加Retry-After头,或者提供一个单独的状态查询端点(比如/reports/{id}/status),让用户可以主动查询报告是否就绪

结合你的Pyramid API场景,优先推荐202,其次是503,绝对不要用400。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 05:06:02