次の方法で共有


アプリで Microsoft Graph データをページングする

Microsoft Graph に対する一部の GET クエリでは、サーバー側のページングまたはクライアント側のページングにより、複数ページのデータが返されます。 ページング データは、アプリのパフォーマンスと Microsoft Graph の応答時間を向上させるのに役立ちます。

注:

Microsoft Graph SDK のページングに関する情報をお探しの場合は、「Microsoft Graph SDK を 使用したコレクションのページスルー」を参照してください。

ページ分割の詳細については、次のビデオを参照してください。

ページングのしくみ

クライアント側のページングでは、クライアント アプリは、$top、$skip、または$skipTokenクエリ パラメーターを使用して、Microsoft Graph が 1 つのページで返す結果の数を指定します。 クライアントが 1 つのページで要求できる結果の数など、クライアント側のページングのサポートは、API と実行されているクエリによって異なります。 たとえば、 /users エンドポイントは $top をサポートしますが、 $skipはサポートしていません。

サーバー側のページングでは、Microsoft Graph サービスは、クライアントが $topを使用して返す結果の数を指定せずに、1 つのページに既定の数の結果を返します。 たとえば、 GET /users エンドポイントは既定値の 100 を返し、結果は 1 ページになります。

すべての結果を取得するために複数のクエリ要求が必要な場合、Microsoft Graph は、結果の次のページへの URL を含む応答に @odata.nextLink プロパティを返します。 この @odata.nextLink プロパティの URL 値を Microsoft Graph に送信することによって、結果の次のページを取得できます。 Microsoft Graph は、取得する結果のページがなくなったまで、各応答を含む @odata.nextLink プロパティ内の結果の次のページへの参照を引き続き返します。 すべての結果を読み取るには、@odata.nextLink プロパティが返されなくなるまで、各応答で@odata.nextLink プロパティが返された Microsoft Graph を引き続き呼び出す必要があります。

たとえば、次の例では、クライアントが $top クエリ パラメーターを使用してテナント内の最大 5 人のユーザーを要求するクライアント側ページングを示しています。

GET https://graph.microsoft.com/v1.0/users?$top=5

結果にさらに多くの結果が含まれている場合、Microsoft Graph は、結果の最初のページと共に、次のような @odata.nextLink プロパティを返します。

"@odata.nextLink": "https://graph.microsoft.com/v1.0/users?$top=5&$skiptoken=RFNwdAIAAQAAAD8...AAAAAAAA"

GET 要求の @odata.nextLink プロパティの URL 全体を使用して、結果の次のページを取得します。 クエリが実行される API に応じて、 @odata.nextLink URL 値には、 $skiptoken または $skip クエリ パラメーターが含まれます。 また、URL には、元の要求にある他のクエリ パラメーターすべても含まれます。 $skiptokenまたは$skip値を抽出して、別の要求で使用しないでください。

ページング動作は、それぞれの Microsoft Graph API によって異なります。 ページングされたデータを扱う場合には、以下の事柄を考慮してください。

  • 結果のページには、0 または 1 つ以上の結果が含まれます。
  • API によって、既定および最大のページ サイズが異なる場合があります。
  • ($top クエリ パラメーターを使用して) 対象の API の最大ページ サイズを超えるページ サイズを指定する場合には、API によって動作が異なる可能性があります。 API によっては要求されたページ サイズが無視されることがあります。対象 API の最大ページ サイズに既定で設定されたり、Microsoft Graph によってエラーが返されたりする場合があります。
  • すべてのリソースまたはリレーションシップがページングをサポートしているわけではありません。 たとえば、 directoryRole に対するクエリではページングはサポートされていません。 これには、ロール オブジェクト自体とロール メンバーの読み取りが含まれます。
  • ディレクトリ リソースに対してページングする場合、ConsistencyLevel ヘッダーなどのカスタム要求ヘッダー (Authorization ヘッダーまたは Content-Type ヘッダーではないヘッダー) は、後続のページ要求には既定では含まれません。 これらのヘッダーを後続のリクエストで送信する必要がある場合は、明示的に設定する必要があります。
  • ディレクトリ リソースに対してクエリを実行するときに$count=trueクエリ文字列を使用する場合、@odata.count プロパティはページ化された結果セットの最初のページでのみ返されます。