Web services 实现异步webapi

Web services 实现异步webapi,web-services,api,rest,asynchronous,Web Services,Api,Rest,Asynchronous,我们正在开发一个web API,它可以处理潜在的大量用户提交的内容,这意味着对端点的调用可能不会立即返回结果。因此,我们正在考虑实现一个异步/非阻塞API。目前,我们的计划是让用户通过以下方式提交其内容: POST /v1/foo JSON响应主体包含一个唯一的请求ID(UUID),用户随后在同一端点上的后续轮询中将其作为参数提交: GET /v1/foo?request_id=<some-uuid> GET/v1/foo?请求\u id= 如果作业完成,结果将作为JSON返回

我们正在开发一个web API,它可以处理潜在的大量用户提交的内容,这意味着对端点的调用可能不会立即返回结果。因此,我们正在考虑实现一个异步/非阻塞API。目前,我们的计划是让用户通过以下方式提交其内容:

POST /v1/foo
JSON响应主体包含一个唯一的请求ID(UUID),用户随后在同一端点上的后续轮询中将其作为参数提交:

GET /v1/foo?request_id=<some-uuid>
GET/v1/foo?请求\u id=
如果作业完成,结果将作为JSON返回,否则将返回状态更新(再次为JSON)

(除非失败,否则上述两个调用只返回“200OK”响应。)


这是实现异步API的合理方法吗?如果不是,那么什么是“正确的”(和宁静的)方法?所描述的模型建议先创建一个临时状态更新资源,然后创建一个最终结果资源,但这对我来说似乎不必要地复杂。

实际上,您在博客文章中所描述的方法是“正确的”RESTful方法,用于处理任何同步操作。我已经实现了一个API来处理大文件上传和转换,并且是这样做的。在我看来,这并不太复杂,而且肯定比延迟回复客户或其他事情要好


另外需要注意的是:如果任务失败,我还将返回
200ok
以及任务资源的表示和资源创建失败的信息

非常感谢,很抱歉没有尽快回复。博客文章中概述的模型似乎确实是实现这一点的最佳方式。