我有一个创建资源的请求(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 回答
您可以选择在POST时返回
202 Accepted
:现在如here所述,您可以更改您的响应正文或 Headers ,以包含类似
Status
值的内容,指示用户执行GET请求时资源生成是否已完成 . 任何积极的状态代码都可以 .或者,如所提倡的here,您还可以在创建实体时为GET返回
202
.所有其他适用的状态代码都可以被视为'definitive',因为当客户端收到
204 No Content
时,它无法区分"entity not yet generated"和"entity was generated, it is empty" .