我有一个使用OData V4的OData端点。当我执行GET
https://localhost:323/Staff?$Filter=Company+eq+Microsoft
然后,我将使用基本的JSON数据将每个人都带回来:
"Company": "Microsoft",
"LastName": "Bob",
"FirstName: "Saget",
"Details": [
{
"Age": "63",
"Sex": "Male"
}]
如果我想查找所有为Microsoft工作且年龄超过30岁的员工,我该如何编写一个使用OData约定进行查询的URL?
我的尝试因以下几个URL版本失败:
https://localhost:323/Staff?$Filter=Company+eq+Microsoft+and+Details/Age+gt+30
https://localhost:323/Staff?$Filter=Company+eq+Microsoft+and+$expand=Details($Filter=Age+gt+30)
答案 0 :(得分:1)
我尝试了您的示例,但在使用$ Filter而不是$ filter时遇到了麻烦。当我在OData's own official website端点上使用它时,它不喜欢$Filter
,但可以与$filter
一起使用。
如果将$Filter
设置为$filter
,您的示例 可能会起作用?你试过了吗?
https://localhost:323/Staff?$filter=Company+eq+Micrsofoft+and+Details/Age+gt+30
我上面的答案是基于在OData的网站上尝试(复制并粘贴并自己尝试,此方法有效并且使用了过滤器中的嵌套属性):
https://services.odata.org/V4/OData/OData.svc/PersonDetails?$filter=(Address/City eq 'Boise' and PersonID gt 0)
所以我认为这会起作用:
https://localhost:323/Staff?$filter=(Company eq 'Microsoft' and Details/Age gt 30)
顺便说一句,示例查询中的“ Microsoft”拼写错误。这也会影响您的结果和预期的输出,因为JSON示例的拼写正确。