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

如何向客户端标识HTTP响应未完成?RESTful实现方案问询

RESTful 标识异步处理中的非最终响应方案

状态码选择

当客户端查询到未完成的不完整响应时,返回**206 Partial Content**是完全符合REST规范的做法。这个状态码原本用于分段资源请求,但语义恰好适配“资源已存在但尚未完全生成”的场景,能明确告知客户端当前拿到的不是最终完整结果。

引导重试的HTTP头

除了设置Cache-Control: no-store, no-cache, must-revalidate禁止缓存外,通过以下头信息可以清晰引导客户端重试:

  • Retry-After:直接指定重试等待时长,比如Retry-After: 10表示10秒后再请求;如果无法确定具体时长,也可以返回一个HTTP格式的时间戳(如Retry-After: Wed, 21 Oct 2025 07:28:00 GMT)。
  • Link:在响应头添加查询接口的自链接并标记rel="refresh",例如Link: <https://your-api.com/resource/123>; rel="refresh",明确告诉客户端重试的目标地址。

响应体辅助说明

在响应体里加入结构化状态信息,让客户端更直观了解进度:

{
  "processing_status": "in_progress",
  "completion_percent": 40,
  "hint": "资源正在生成,请稍后重试"
}

客户端还可以根据completion_percent动态调整重试间隔,比如进度低时等待久一点,进度接近100%时缩短间隔。

注意要点

  • 绝对不要用200 OK返回不完整内容,这会误导客户端认为已获取最终结果。
  • 如果处理过程中出现异常,直接返回对应错误状态码(如500 Internal Server Error)并在响应体说明问题,避免客户端无意义重试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 20:17:06