【发布时间】:2020-08-14 09:03:12
【问题描述】:
Odata V4 规范说操作可能有可观察到的副作用,应该使用 HTTP POST 调用。但我们确实有需要使用仅修改某些状态的操作的场景。
例如:
1.
您可能希望将由 id 标识的文档的状态标记为已锁定
端点 - .../Documents({id})/lock()。
由于我在这里进行部分更新,因此我认为 PATCH 更合适。
2.
您可能希望提供两种删除文档的方法
a) 只是隐藏
端点 - ...../Documents({id})
这是 HTTP DELETE(无争议)
b) 永久删除
端点 - ...../Documents({id})/permanentDelete()
这是一个 ODATA 操作。
在我看来,HTTP 删除在这里更合适,而不是HTTP POST。
从 Odata 的角度来看,推荐的方法是什么?非常感谢这里的任何帮助。
以下是来自 SPEC 的信息。
规格 11.5.4 操作
操作是由 OData 服务公开的操作,在调用时可能会产生副作用。动作可以返回数据,但不能进一步由额外的路径段组成。 11.5.4.1 调用操作
为了调用绑定到资源的操作,客户端向操作 URL 发出 POST 请求。动作 URL 可以从先前返回的实体表示中获得,或者通过将命名空间或别名限定的动作名称附加到标识资源的 URL 来构造,该资源的类型与绑定参数的类型相同或派生自那个行动。绑定参数的值是在附加动作名称之前由 URL 标识的资源的值,并且任何非绑定参数值都根据特定格式在请求正文中传递。
提前致谢
--ksp
【问题讨论】:
标签: rest asp.net-web-api odata