文字列(ユーザーの表示名)内の特定のWordを検索するMicrosoft Graph APIの$filter
クエリを作成する必要があります。
たとえば、名前に "Esteban"が含まれるすべてのユーザーを検索できるようにしたいとします。
ルイス・エステバン
アルフォンスエステバン
エステバンルイス
アルフォンスエステバンルイス
次のクエリは機能しますが、名前に "Esteban"で始まるユーザーのみが返され、 "Esteban"を含むユーザーは返されません:
https://graph.Microsoft.com/v1.0/users?$filter=startswith(displayName,'Esteban')
contains
の代わりにstartswith
も使用しようとしましたが、エラー応答が返されます。
{"error":{"code": "Request_BadRequest"、 "message": "'contains'という名前の不明な関数が見つかりました。これは、ナビゲーションプロパティのキールックアップである可能性もあります。"、 " innerError ":{" request-id ":" e5ed5c30-4e62-4497-8976-1d38167e759d "、" date ":" 2018-09-13T23:17:17 "}}}
Microsoft Graph docs がOData 4.0をサポートしていると言っても、次のように言っています。
「contains string演算子は現在、どのMicrosoft Graphリソースでもサポートされていません。」
OData documentation および construction rules によって提供される、filter
および他のクエリパラメーターによってサポートされると思われる他のコマンドも試しました。
特に、これらのコマンドの組み合わせを試しました:
で始まる
endswith
の指標
部分文字列
しかし、成功しませんでした。 MS Graph APIはstartswith
以外は何もサポートしていないようです。
APIのv1.0とベータエンドポイントの両方を試しました。
他に方法はありますか、OData 4.0コマンドおよび/またはMSでサポートされているクエリパラメータのスマートな組み合わせcontains
?と同等の検索を可能にするグラフAPI
PS:グラフエクスプローラーでクエリを試すことができます ここ 。
ご存知のように、現在、Graph APIは要件をサポートしていません。私の提案は、最初にユーザーリストを取得してから、メモリ内フィルターを実行することです。この方法は、サポートされていない他のグラフAPIにも適用できます。
その間、必ず 既存の機能リクエストユーザーの声 に投票するか、新しい投票を送信してください。
これは、すべてのユーザーを自分でフィルタリングすることなく、必要なリストを取得できる唯一の選択肢のようです
https://graph.Microsoft.com/v1.0/me/people?$search=Esteban&$top=100000
このように ブログ投稿 Microsoft-graph apiは$ filterのみをサポートします
等しい(eq)
等しくない(ne)
より大きい(gt)
以上(ge)
未満(lt)、以下(le)
および(および)
または(または)
ない(ない)
〜で始まる
どれか
および$ searchは、「メッセージ」および「個人」エンティティでのみサポートされています。