ReST:用于在 201 Created 后轮询资源的 http 204 状态代码

yar*_*ar1 3 rest http

我有一个创建资源的请求 (POST)。此资源需要很长时间才能创建(最多几个小时),但它的 id 会立即创建。

在我看来,最合适的流程是:

  • POST /thing - 响应为 201 使用“位置标头字段给出的资源的 URI”创建(根据http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

  • 开始轮询 GET /thing/id 响应应该是:

    • 只要资源还没有准备好 - 204 No Content

    • 一旦资源准备好 - 200 OK 与在响应正文中返回的资源

我正在寻求意见/建议,因为我的意见基于(大量)阅读而不是经验,这似乎与大多数建议不同,最初返回 202 Accepted 并仅在响应 http DELETE 时使用 204

Cod*_*ter 7

您可以选择202 Accepted在 POST 时返回:

请求已被接受进行处理,但处理尚未完成。该请求最终可能会或可能不会被执行,因为在实际进行处理时可能会被禁止。

现在正如这里所解释的,您可以更改您的响应正文或标头以包含诸如Status指示用户执行 GET 请求时资源生成是否已完成的值之类的内容。任何积极的状态代码都可以。

或者,正如这里所提倡的,您也可以202在创建实体时返回GET。

所有其他适用的状态代码都可以被认为是“确定的”,因为当客户端接收时204 No Content,它无法区分“实体尚未生成”“实体已生成,它为空”