最佳答案
我正在为一个接受用户提供的数据的服务编写 REST API。我希望保持所有操作完全异步,这包括 PUT、 POST、 DELETE 甚至 GET 请求。我的想法是接收请求,对请求进行足够的处理,以确保它是一个有效的请求,然后传递一个 HTTP 202接受的响应,以及一个最终可用数据的 URL 和一个令牌,以便后续请求可以与处理过的数据匹配。如果请求无效,那么我将发送一个 HTTP 400。
然后,客户机将负责检查我在将来某个时候提供给他们的 URL,并传递令牌。如果数据可用,我返回一个正常的200或201,但如果我仍在处理请求,我将发送另一个202,表明处理尚未完成。如果错误处理的数据,我将发送4xx 或5xx 状态作为必要的。
我想这样做的原因是,我可以将所有有效的请求转储到一个请求池中,并让工作人员从队列中拉出请求,并在请求可用时处理它们。由于我不知道池的大小或可用的工作人员的数量,我不能确定我可以得到足够快的请求,以满足30秒的谷歌应用程序引擎的限制。
我的问题是: 我是否以这种方式处理请求从而妨碍了 REST?例如,浏览器似乎要求对请求立即作出响应。对于我的 HTML 页面,我计划使用结构化页面进行响应,然后使用 AJAX 来处理数据请求。
我最感兴趣的是以这种方式使用 REST 处理数据的任何意见或经验。