获取请求网址

时间:2020-02-28 19:35:56

标签: c# .net odata

我有一个使用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)

1 个答案:

答案 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示例的拼写正确。