请求重新处理失败的异步任务时正确的REST端点

时间:2015-02-16 21:32:23

标签: rest httpverbs

想象一下,请求从特定网址上传请求文件的系统。

http://example.com/{accountId}/files

对该端点进行POST以启动文件传输。但鉴于该文件可能很大,并且该过程可能需要一段时间,服务器返回202响应。

一段时间后,执行GET

http://example.com/{accountId}/files/{fileId}

如果该文件的返回状态仍然未决,那么我们想告诉服务器再次尝试传输,因为我们认为它已超时。

我感到困惑的是,相应的REST端点/ HTTP动词将触发服务器重新处理该文件。

1 个答案:

答案 0 :(得分:1)

我建议添加一个包含图像处理器状态的“处理器”资源:

http://example.com/{accountId}/files/{fileId}/processor

GET就可以像这样返回JSON:

{
  "status": "Pending"
}

然后,客户端可以通过向处理器资源发出空POST来重新启动处理器。此外,客户端可以使用服务器记录的“reason”值POST POST JSON(而不是仅发出空POST)。

基本资源/ {accountId} / files / {fileId}可以包含指向处理器资源的链接,这样客户端就不必使用该信息进行硬编码。