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

时间:2014-02-18 12:15:11

标签: http rest

我有一个创建资源的请求(POST)。

这个资源需要很长时间才能创建(最多几个小时),但它的ID是立即创建的。

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

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

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

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

    • 资源准备就绪后 - 使用响应正文中返回的资源200 OK

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

1 个答案:

答案 0 :(得分:4)

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

  

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

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

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

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