rest - 使用 OData 异步创建资源

标签 rest odata

在 REST API 中,如果我有一个资源,其创建可能需要相当长的时间,我可以返回一个状态代码为 202 的临时资源。然后,客户端可以轮询此临时资源,直到创建实际资源,并在创建实际资源时重定向到该资源。已完成(状态代码为 303)。就像 http://restcookbook.com/Resources/asynchroneous-operations/ 中描述的那样.

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

最佳答案

OData V4 specification 中(简要)提到了异步请求。它可能值得一读以了解详细信息,但简而言之:

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

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

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

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

关于rest - 使用 OData 异步创建资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53704551/

相关文章:

c# - 从 Windows Azure 存储检索数据

c# - 来自运行时数据层的 C# 中的动态 odata 服务

c# - 从 C# 调用 OData 服务

python - 是否有一种 pythonic 方法可以通过不同的网络命名空间执行 REST API 调用?

php - 用 php 实现 RESTFUL webservice

java - 与本地主机的 HTTP 连接失败

rest - "@unique"违规的最佳返回码是什么?

c# - 在 OData 查询中使用复杂类型

javascript - Microsoft Dynamics CRM - 用于检索实体的两个选项集属性的标签的 OData URL 格式是什么?

rest - GRPC 重复字段不会转码为数组作为 REST API 中的正文参数