Мне нужно создать $filter
запрос для Microsoft Graph API , который ищет определенное слово в строке (отображаемое имя пользователя).
Например, я бы хотел найти всех пользователей, которые имеют "Esteban" в своих именах:
Луис Эстебан
Альфонс Эстебан
Эстебан Луис
Альфонс Эстебан Луис
Следующий запрос работает, но возвращает только пользователей, начинающихся с "Esteban" в именах, но не пользователей, которые содержат "Esteban" :
https://graph.microsoft.com/v1.0/users?$filter=startswith(displayName,'Esteban')
Я также пытался использовать contains
вместо startswith
, но он выдает ошибку:
{"error": {"code": "Request_BadRequest", "message": "Обнаружена неизвестная функция с именем 'содержит'. Это также может быть поиск ключа в свойстве навигации, что недопустимо. "," innerError ": {" request-id ":" e5ed5c30-4e62-4497-8976-1d38167e759d "," date ":" 2018-09-13T23: 17: 17 "}}}
И хотя документы Microsoft Graph говорят, что они поддерживают OData 4.0 , они также говорят это:
"Оператор содержит строку в настоящее время не поддерживается ни на одном из ресурсов Microsoft Graph."
Я также пробовал другие команды, заданные в документации OData и правилах построения , которые должны поддерживаться filter
и другими параметрами запроса.
В частности, я пробовал комбинации этих команд:
StartsWith
EndsWith
IndexOf
подстрока
но безуспешно. Похоже, MS Graph API не поддерживает ничего, кроме startswith
.
Я пробовал обе версии v1.0 и бета-версии API.
Есть ли другой способ, умная комбинация команд OData 4.0 и / или параметров запроса, поддерживаемая API Graph MS , которая позволяет выполнять поиск, эквивалентный contains
PS: Вы можете попробовать запросы с помощью Graph Explorer здесь .