使用OData创建异步资源

时间:2018-12-10 11:18:16

标签: rest odata

在REST API中,如果我拥有一个可能花费大量时间创建的资源,我可以返回状态码202的临时资源。然后,客户端可以轮询该临时资源,直到创建了实际资源,并在将其实际重定向到该资源时完成(带有303状态代码)。如http://restcookbook.com/Resources/asynchroneous-operations/中所述。

是否有任何标准化的方法可以在OData中创建此类资源?

1 个答案:

答案 0 :(得分:1)

OData V4 specification中简短地提到了异步请求。也许值得阅读有关详细信息,但总之:

客户端发出包含Prefer: respond-async标头的请求。然后,服务器可以按照您所述的HTTP 202响应进行响应。此响应包括一个Location标头,该标头指向“状态监视器资源”。

当客户端向状态监控器资源发送请求时,主要有3个响应:

  1. HTTP 202:该操作尚未完成。
  2. HTTP 200:操作完成。此响应还必须包含AsyncResult标头,该标头包含操作的状态码(例如,成功则为200,错误为5xx等)。此响应的正文包含操作的结果。
  3. HTTP 404
    • 该操作不存在。
    • 操作被取消。
    • 该操作可能已经存在,但是客户端在请求状态之前等待了太长时间(也可能是HTTP 410 (Gone))。

我不知道任何实现此行为的框架,因此您可能必须自己编程。