我遇到的问题是我们的后端使用 OData“类似”处理器,它具有一些特殊功能。它面向OData_2.0 所以问题是: 对于以下此类请求,最类似于 OData 的方法是什么
我们的后端数据模型没有单一属性键。但如果可能的话,建议使用 OData-Like。
第一:我需要通过一个 OData 请求删除多个对象。我的第一个想法是使用过滤器来定义应删除哪些对象。但我不确定这是否是正确的方法。
例如:我想删除所有价格大于 10.00 的商品
http://.../<oDataServiceX>/Item?$filter=ItemPrice gt 10.00
第二:当我想删除一个无法通过单个键属性识别的对象时。我如何在经典的 OData-Delete-Request-Syntax 中定义它。
以下是类似 OData 的吗?
http://.../<oDataServiceX>/Item(1,54,2) //3 Attributes which define the key for the Item
或者我应该再做一次过滤吗? (如果过滤器是执行此操作的正确方法)。
http://.../<oDataServiceX>/Item?$filter=keyAttr1 eq 1 and keyAttr2 eq 54 and keyAttr 3 eq 2
您无法在单个 OData 查询中删除多个条目,您需要首先检索它们的密钥,然后发送多个删除请求。有两种方法可以改进此过程:
希望这有帮助。
Odata v4 支持 DELETE /entity(key1='', key2='') 等格式。
但是,对于 oData v2,一种选择可能是使用请求正文传递一些数据。删除/实体,数据在正文中。 文档指出约定是通过键删除实体。然而,当我们必须通过多个键删除 odata v2 服务时,就采用了这种方法。此外,在使用 oData v2 库实现此功能时,我们必须添加路由约定以支持无密钥删除。