web-dev-qa-db-fra.com

Créez une requête de filtre pour Microsoft Graph qui fonctionne de manière équivalente à "contient"

J'ai besoin de créer une requête $filter pour l'API Microsoft Graph qui recherche un mot spécifique dans une chaîne (nom complet des utilisateurs).

Par exemple, je voudrais pouvoir trouver tous les utilisateurs qui ont "Esteban" dans leurs noms:

Luis Esteban
Alphonse Esteban
Esteban Luis
Alphonse Esteban Luis

La requête suivante fonctionne, mais ne renvoie que les utilisateurs qui commencent par "Esteban" dans leurs noms, mais pas les utilisateurs contenant "Esteban":

https://graph.Microsoft.com/v1.0/users?$filter=startswith(displayName,'Esteban')

J'ai aussi essayé d'utiliser contains au lieu de startswith, mais cela donne une réponse d'erreur:

{"error": {"code": "Request_BadRequest", "message": "Une fonction inconnue portant le nom" contient "a été trouvée. Il peut également s'agir d'une recherche par clé sur une propriété de navigation, qui n'est pas autorisée.", " innerError ": {" request-id ":" e5ed5c30-4e62-4497-8976-1d38167e759d "," date ":" 2018-09-13T23: 17: 17 "}}

Et même si les Microsoft Graph Docs déclarent prendre en charge OData 4.0, ils disent également ceci:

"L'opérateur de chaîne contient n'est actuellement pris en charge sur aucune ressource Microsoft Graph." 

J'ai également essayé d'autres commandes données par la documentation OData et les règles de construction qui sont supposées être prises en charge par filter et d'autres paramètres de requête.

En particulier, j'ai essayé des combinaisons de ces commandes:

commence avec
se termine par
Indice de
sous-chaîne

mais sans succès. Il semble que l’API MS Graph ne prenne en charge que startswith.

J'ai essayé les versions 1.0 et bêta de l'API.

Existe-t-il un autre moyen, une combinaison intelligente de commandes OData 4.0 et/ou de paramètres de requête pris en charge par l'API MS Graph, permettant une recherche équivalente à contains?

PS: Vous pouvez essayer des requêtes avec l'explorateur de graphes ici .

9
Ricardo Guerrero

Comme vous le savez, Graph API ne prend pas en charge votre besoin pour le moment. Ma suggestion est d’obtenir d’abord la liste des utilisateurs, puis de filtrer en mémoire. De cette manière, s'applique également à d'autres API graphiques non prises en charge.

Pendant ce temps, votez la demande de fonctionnalité existante dans User Voice ou envoyez une nouvelle. 

3
Seiya Su

Cela semble être la seule alternative qui vous donnera la liste que vous voulez sans filtrer vous-même tous les utilisateurs

https://graph.Microsoft.com/v1.0/me/people?$search=Esteban&$top=100000

Selon cette blog post , l’API Microsoft-Graph ne prend en charge que $ filter 
est égal à (éq)
pas égal (ne)
supérieur à (gt)
supérieur ou égal à (ge)
inférieur à (lt), inférieur ou égal à (le)
et et)
ou ou)
pas pas)
commence avec
tout

et $ search ne sont supportés que par les entités "messages" et "personne".

2
codeye