需要 odata v4 搜索示例

标签 odata

我正在尝试学习 OData 版本 4 协议(protocol)并使用 Northwind 数据库运行查询。

OData 4 引入了使用 $search 的自由文本搜索,但我尝试过的查询都失败了。

我尝试了一些事情(有很多变体):

我收到的错误消息是:查询参数“$search”以系统保留的“$”字符开头,但无法识别。

官方docs这里不多说,引用另一个source确切的格式。但是,格式对我来说非常神秘......

从文档来看,总体思路是 http://host/service/Products?$search=blue OR green,这似乎与我的示例一致。所以不确定我在这里做错了什么。

有没有人成功地使用过这个并且可以给我一个例子?谢谢!

最佳答案

您收到来自 http://services.odata.org/V4/Northwind/Northwind.svc 的错误消息因为此服务尚未更新以支持 $search。 ODL从6.1.0版本开始支持$search。请查看6.1.0 release notes

From the spec , "$search 系统查询选项将结果限制为仅包含与指定搜索表达式匹配的那些实体。匹配意味着什么的定义取决于实现。"由于匹配规则依赖于服务实现,服务可以确定哪些属性或什至属性组合来匹配搜索表达式。

此服务 http://odatae2etest.azurewebsites.net/demo/DefaultService/已经简单地实现了 $search,并且此服务选择具有第一个字符串类型属性来匹配搜索表达式。

因此对于此服务,http://odatae2etest.azurewebsites.net/demo/DefaultService/ProductDetails ?$search=snack 实际上是为了返回描述中包含“snack”的 ProductDetails。

否则,$search 支持 AND、OR、NOT 运算。

关于需要 odata v4 搜索示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23893363/

相关文章:

java - 使用 SAP Cloud SDK 版本 3.2.0 向 OData 服务发送 POST 请求

asp.net-web-api - 如何修复 `Request.GetNextPageLink`过时的API?

odata - 如何访问 OData V2 服务的两级深层嵌套关联?

rest - odata 过滤器中是否有 LIKE 运算符?

C# WebApi Odata - EF 不过滤

sql - Linq to WCF OData 是否适合复杂查询

asp.net-mvc - odata 和 web api 在同一个 Controller 中

rest - OData substringof 或startswith 返回所有项目

c# - 将 OData 属性配置为 Date 而不是 DateTime 类型

c# - OData 服务不返回项目在数据库中的默认顺序