gpt4 book ai didi

rest - 异步任务的 HTTP 状态代码

转载 作者:可可西里 更新时间:2023-11-01 15:20:53 25 4
gpt4 key购买 nike

我正在实现一个涉及在服务器上创建对象的 REST API。对象创建涉及多个步骤,可能需要一段时间。我不希望用户等待它。我只是简单地为客户端请求返回一个带有唯一请求 ID 的 202 响应,并在服务器上启动一些线程来创建对象。客户端应该在将来检查请求是否完成。流程是这样的:

  1. 客户端 POST 对象。
  2. 服务器响应 202 Accepted 代码和 Location header /my-app/<reqId>
  3. 客户端在 /my-app/<reqId> 上执行 GET

现在在第三步,这些事情可能会发生:

  1. 对象创建仍在进行中(客户端应稍后再次检查)。
  2. 发生了一些错误。
  3. 对象已成功创建。

现在我的 API 应该使用什么 http 代码 /my-app/<reqId>应对以上三种情况?

最佳答案

我可能会从一开始就做一些不同的事情。 Location header 有一个 specific meaning , 指向连接到请求的实际资源,基本上是请求的“结果”,而不是指示请求本身状态的资源。这可能是一个小差异,但以后可能会造成混淆。

还有规范says 202 应返回指示或链接到描述请求本身进度的“状态”资源的内容。

所以流程可能是:

  1. 客户端执行POST
  2. 服务器发送 202 AcceptedLocation header 指向所请求资源所在的 URI(这不是 状态),这将是 404 直到处理完成.此外,202 的内容可能包括“状态”表示。 Content-Location header 具有指向此“状态”资源的链接。
  3. 客户端 GET 状态资源以检查进度。此资源始终存在,因此它始终返回 200
  4. 如果状态指示成功,则Location 中指示的资源现在存在,否则它将永远不存在。状态资源将无限期地继续存在。

关于rest - 异步任务的 HTTP 状态代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36421707/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com