【问题标题】:ReST: http 204 status code for polling for a resource after a 201 CreatedReST:http 204 状态代码,用于在创建 201 后轮询资源
【发布时间】:2014-03-18 04:34:08
【问题描述】:

我有一个创建资源的请求 (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 并仅使用 204 来响应 http DELETE

【问题讨论】:

    标签: http rest


    【解决方案1】:

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

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

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

    或者,正如 here 所提倡的那样,您也可以在创建实体时为 GET 返回 202

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-09
      • 1970-01-01
      • 1970-01-01
      • 2011-10-07
      • 1970-01-01
      相关资源
      最近更新 更多