我有一个服务,它接受传入的请求,并在后台异步地完成它(返回一个202 Accepted
状态码,表示它已经开始处理)。客户端可以通过向其资源发出GET请求来检查该请求的状态。
由于该请求是在后台处理的,因此客户端在任何时候检查它可能是不完整的(它的一部分可能丢失并且进程未完成)。有什么RESTful方式可以让我向客户机表示这一点吗?显然,我应该提供Cache-Control
头,以防止客户端缓存此响应,因为它不是最终的。但是我要怎么做才能让客户知道,如果需要最新的信息,应该稍后再问一次。
参考:
客户端可以通过向其资源发出GET请求来检查该请求的状态。
Ifresult的异步后台进程是资源的创建。这对我来说意味着资源应该404
,直到它准备好,在这一点上,它应该返回200
。
基于此,客户端可以通过检查状态码来发现进程未完成。
我想说你可能还想定义一个好的响应体(理想情况下使用application/problem+json
),这样客户端就可以发现为什么是404。
pending
,complete
或failed
。我不知道对此有任何标准的HTTP响应格式,因此您可能需要为此定义一些JSON响应体。状态资源应该总是只返回200 OK
,因为'status'总是可以找到的。
我使用400表示请求太早。很容易封装在指数回退重试机制中。
有其他的,但不是所有的客户端都可以处理,例如423锁定。