在 REST API 中,如果我有一个资源,其创建可能需要相当长的时间,我可以返回一个状态代码为 202 的临时资源。然后,客户端可以轮询此临时资源,直到创建实际资源,并在创建实际资源时重定向到该资源。已完成(状态代码为 303)。就像 http://restcookbook.com/Resources/asynchroneous-operations/ 中描述的那样.
是否有任何标准化方法可以在 OData 中创建此类资源?
最佳答案
OData V4 specification 中(简要)提到了异步请求。它可能值得一读以了解详细信息,但简而言之:
客户端发出包含 Prefer: respond-async
header 的请求。然后,服务器可以按照您的描述使用 HTTP 202
响应进行响应。此响应包含一个指向“状态监视器资源”的 Location
header 。
当客户端向状态监视器资源发送请求时,主要有 3 个响应:
HTTP 202
:操作尚未完成。HTTP 200
:操作完成。此响应还必须包含AsyncResult
header ,其中保存操作的状态代码(例如,200 表示成功,5xx 表示错误等)。此响应的正文包含操作的结果。HTTP 404
:- 该操作不存在。
- 操作已取消。
- 该操作可能已存在,但客户端在请求状态之前等待了太长时间(也可能是
HTTP 410(已消失)
)。
我不知道有任何框架可以实现此行为,因此您可能必须自己编程。
关于rest - 使用 OData 异步创建资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53704551/