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

Proper REST endpoints when requesting reprocessing of failed asynchronous task

想象一个用于请求文件的系统是从特定的 URL 上传的。

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

向该端点发送 POST 以启动文件传输。但是鉴于文件可能很大,并且该过程可能需要一段时间服务器 returns 202 响应。

一段时间后,对

执行 GET
http://example.com/{accountId}/files/{fileId}

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

令我困惑的是,什么是适当的 REST endpoint/HTTP 动词来触发服务器重新处理该文件。

我建议添加包含图像处理器状态的 "processor" 资源:

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

GET 可以 return JSON 像这样:

{
  "status": "Pending"
}

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

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