OData搜索已转换的属性

时间:2016-03-07 21:45:22

标签: rest odata

我们通过OData REST API提供json对象。对象的粗略结构如下所示

{     " Property1":" Value1",     " Property2":{         " InterestingProperty":" / text1 / part1 / text2 / part2"     } }

价值观" part1"和"第2部分"是我感兴趣的人,从后端他们被编入索引。

我需要设计List API,它允许过滤包含该特定属性中part1和part2的对象。 关于如何解决这个问题的任何指导?

1 个答案:

答案 0 :(得分:1)

您可以使用$filter query option和内置contains功能在客户端解决此问题。例如,

GET http://host/MyObjects?$filter=contains(Property2/InterestingProperty,'part1') and contains(Property2/InterestingProperty,'part2')

然而,这种方法确实存在误报;例如,如果InterestingProperty的值类似于/text1/part1/text2/part234

也许更好的方法是定义服务器端OData function来进行自定义过滤。这将允许您对InterestingProperty的匹配进行细粒度控制。 CustomFilter命名空间中名为MyService且绑定到MyObjects实体集的函数将按如下方式调用:

GET http://host/MyObjects/MyService.CustomFilter

如果您正在使用OData的.NET实现,那么可以使用tutorial来开始编写OData函数。