首页 文章

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

提问于
浏览
3

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

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

  • POST / thing - 响应是201使用"URI for the resource given by a Location header field"创建(根据http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

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

  • 只要资源尚未准备好 - 204 No Content

  • 资源准备就绪后 - 200 OK,并在响应正文中返回资源

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

1 回答

  • 4

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

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

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

    或者,如所提倡的here,您还可以在创建实体时为GET返回 202 .

    所有其他适用的状态代码都可以被视为'definitive',因为当客户端收到 204 No Content 时,它无法区分"entity not yet generated"和"entity was generated, it is empty" .

相关问题