Ich muss eine $filter
-Abfrage für die Microsoft Graph-API erstellen, die in einem String (dem Anzeigenamen der Benutzer) nach einem bestimmten Word sucht.
Ich möchte zum Beispiel alle Benutzer finden, die "Esteban" im Namen haben:
Luis Esteban
Alphonse Esteban
Esteban Luis
Alphonse Esteban Luis
Die folgende Abfrage funktioniert, gibt jedoch nur Benutzer zurück, die mit "Esteban" im Namen beginnen, nicht Benutzer, die "Esteban" enthalten:
https://graph.Microsoft.com/v1.0/users?$filter=startswith(displayName,'Esteban')
Ich habe auch versucht, contains
anstelle von startswith
zu verwenden, aber es gibt eine Fehlerantwort:
{"error": {"code": "Request_BadRequest", "message": "Eine unbekannte Funktion mit dem Namen 'enthält' wurde gefunden. Dies kann auch eine Suche nach Schlüsseln für eine Navigationseigenschaft sein, die nicht zulässig ist.", " innerError ": {" request-id ":" e5ed5c30-4e62-4497-8976-1d38167e759d "," date ":" 2018-09-13T23: 17: 17 "}}}
Und obwohl die Microsoft Graph-Dokumente sagen, dass sie OData 4.0 unterstützen, sagen sie auch Folgendes:
"Der Enthält Zeichenfolgenoperator wird derzeit für keine Microsoft Graph-Ressourcen unterstützt."
Ich habe auch andere Befehle aus der OData-Dokumentation und den Konstruktionsregeln versucht, die von filter
und anderen Abfrageparametern unterstützt werden sollen.
Ich habe insbesondere Kombinationen dieser Befehle ausprobiert:
beginnt mit
endet mit
Index von
Teilzeichenfolge
aber zu keinem erfolg. Es scheint, dass die MS Graph-API nichts unterstützt, außer startswith
.
Ich habe sowohl v1.0 als auch die Beta-Endpunkte der API ausprobiert.
Gibt es einen anderen Weg, eine intelligente Kombination von OData 4.0 - Befehlen und/oder Abfrageparametern, die von der MS Graph-API unterstützt werden und die eine Suche entsprechend contains
ermöglicht?
PS: Abfragen können Sie mit dem Graph Explorer hier ausprobieren.
Wie Sie wissen, unterstützt Graph API Ihre Anforderung jetzt nicht. Mein Vorschlag ist, zuerst die Benutzerliste abzurufen und dann In-Memory-Filter durchzuführen. Dies gilt auch für andere nicht unterstützte Graph-API.
Stimmen Sie in der vorhandenen Funktionsanfrage ab in User Voice oder senden Sie eine neue.
Dies scheint die einzige Alternative zu sein, mit der Sie die gewünschte Liste erhalten, ohne alle Benutzer selbst filtern zu müssen
https://graph.Microsoft.com/v1.0/me/people?$search=Esteban&$top=100000
Gemäß diesem Blog-Post unterstützt die Microsoft-Graph-API nur $ filter mit
ist gleich (Eq)
nicht gleich (ne)
größer als (gt)
größer als oder gleich (ge)
kleiner als (lt), kleiner oder gleich (le)
und und)
oder oder)
nicht nicht)
beginnt mit
irgendein
und $ search wird nur für "Nachrichten" und "Personen" unterstützt.