我应该使用什么 HTTP 状态代码来处理状态更新?

What HTTP status code should I use for processing status update?

我正在构建一个将一组图像发送到自定义服务器进行处理的应用程序。处理过程最多可能需要几分钟,因此我在应用程序中实现了一个进度条。进度条通过 http get 请求更新,该请求 returns 一个包含错误消息、处理状态或处理结果的 JSON 对象。

上传成功后(通过放置请求),服务器响应状态为 202 已接受。

如果发生错误,HTTP 请求将返回状态 500 Internal Server Error,如果处理未完成,则返回 102 Processing,如果处理完成且结果可用,则返回 200 Ok。

当我在邮递员中测试返回 102 处理状态时消息的内容是隐藏的,这让我相信我误解了我应该使用哪些代码。我在这些情况下使用的 HTTP 代码是否有意义,还是我应该使用其他代码?

谢谢

102 Processing 不是 "normal" 状态码。与 100 系列中的其他人一样,它们更像是 'intermediate' 状态代码。

当服务器发送10210x时,意味着客户端将继续等待'real'状态码。因此,实际的单个 HTTP 请求可能会导致以下 HTTP 状态代码中的 all

  • 100
  • 102
  • 102(可能出现不止一次)
  • 103
  • 103
  • 200(终于得到真正的'OK').

您的用例 不是 102 的适当用法,除非您保持连接打开并发送更多状态代码。许多 HTTP 客户端没有内置的方式来通知您这些 'intermediate statuses',但有些客户端有。

鉴于您正在进行某种轮询,并且您有一个代表 'the status of the image' 的资源(我想象的是 /image/{upload-id}/status 之类的资源 return 200 OK 图像已处理和未处理。

这样想,不管图像本身如何,'status of the image'-资源总是可用的,可以return 200。

插件:我写了一个关于这段代码的blog post