在REST API中,如果我拥有一个可能花费大量时间创建的资源,我可以返回状态码202的临时资源。然后,客户端可以轮询该临时资源,直到创建了实际资源,并在将其实际重定向到该资源时完成(带有303状态代码)。如http://restcookbook.com/Resources/asynchroneous-operations/中所述。
是否有任何标准化的方法可以在OData中创建此类资源?
答案 0 :(得分:1)
OData V4 specification中简短地提到了异步请求。也许值得阅读有关详细信息,但总之:
客户端发出包含Prefer: respond-async
标头的请求。然后,服务器可以按照您所述的HTTP 202
响应进行响应。此响应包括一个Location
标头,该标头指向“状态监视器资源”。
当客户端向状态监控器资源发送请求时,主要有3个响应:
HTTP 202
:该操作尚未完成。HTTP 200
:操作完成。此响应还必须包含AsyncResult
标头,该标头包含操作的状态码(例如,成功则为200,错误为5xx等)。此响应的正文包含操作的结果。HTTP 404
:
HTTP 410 (Gone)
)。我不知道任何实现此行为的框架,因此您可能必须自己编程。