Фильтр запросов OData в Get URL запроса - PullRequest
1 голос
/ 28 февраля 2020

У меня есть конечная точка OData с использованием OData V4. Когда я делаю GET

https://localhost:323/Staff?$Filter=Company+eq+Microsoft

, я получаю несколько человек обратно с этими базовыми c JSON данными:

"Company":  "Microsoft",
"LastName": "Bob",
"FirstName: "Saget",
"Details": [
{
   "Age": "63",
   "Sex": "Male"
}]

Как мне написать URL для запросить с использованием соглашения OData, если я хочу найти всех сотрудников, которые работают в Microsoft и имеют возраст, превышающий 30?

Моя попытка не удалась с парой версии 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 Ответ

1 голос
/ 28 февраля 2020

Я попробовал ваши примеры и столкнулся с проблемой использования $ Filter, а не $ filter. Когда я использовал это на конечных точках собственного веб-сайта OData , он не понравился $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 оно написано правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...