web-dev-qa-db-ja.com

「含む」と同等に機能するMicrosoft Graphのフィルタークエリを作成する

文字列(ユーザーの表示名)内の特定の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 docsOData 4.0をサポートしていると言っても、次のように言っています。

「contains string演算子は現在、どのMicrosoft Graphリソースでもサポートされていません。」

OData documentation および construction rules によって提供される、filterおよび他のクエリパラメーターによってサポートされると思われる他のコマンドも試しました。

特に、これらのコマンドの組み合わせを試しました:

で始まる
endswith
の指標
部分文字列

しかし、成功しませんでした。 MS Graph APIstartswith以外は何もサポートしていないようです。

APIのv1.0とベータエンドポイントの両方を試しました。

他に方法はありますか、OData 4.0コマンドおよび/またはMSでサポートされているクエリパラメータのスマートな組み合わせcontainsと同等の検索を可能にするグラフAPI

PS:グラフエクスプローラーでクエリを試すことができます ここ

12

ご存知のように、現在、Graph APIは要件をサポートしていません。私の提案は、最初にユーザーリストを取得してから、メモリ内フィルターを実行することです。この方法は、サポートされていない他のグラフAPIにも適用できます。

その間、必ず 既存の機能リクエストユーザーの声 に投票するか、新しい投票を送信してください。

3
Seiya Su

これは、すべてのユーザーを自分でフィルタリングすることなく、必要なリストを取得できる唯一の選択肢のようです

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

このように ブログ投稿 Microsoft-graph apiは$ filterのみをサポートします
等しい(eq)
等しくない(ne)
より大きい(gt)
以上(ge)
未満(lt)、以下(le)
および(および)
または(または)
ない(ない)
〜で始まる
どれか

および$ searchは、「メッセージ」および「個人」エンティティでのみサポートされています。

2
codeye