Pagination des données Microsoft Graph dans votre application

Certaines requêtes GET sur Microsoft Graph retournent plusieurs pages de données en raison de la pagination côté serveur ou de la pagination côté client. La pagination des données permet d’améliorer les performances de votre application et le temps de réponse de Microsoft Graph.

Pour en savoir plus sur la pagination, consultez la vidéo suivante.

Fonctionnement de la pagination

Dans la pagination côté client, une application cliente spécifie le nombre de résultats qu’elle souhaite que Microsoft Graph retourne dans une seule page à l’aide des paramètres de requête $top, $skip ou $skipToken . La prise en charge de la pagination côté client, y compris le nombre de résultats que le client peut demander dans une seule page dépend de l’API et de la requête en cours d’exécution. Par exemple, le point de /users terminaison prend en charge $top mais pas $skip.

Dans la pagination côté serveur, le service Microsoft Graph retourne un nombre par défaut de résultats dans une seule page sans que le client spécifie le nombre de résultats à retourner à l’aide $topde . Par exemple, le GET /users point de terminaison retourne une valeur par défaut de 100 résultats dans une seule page.

Lorsque plusieurs requêtes sont nécessaires pour récupérer tous les résultats, Microsoft Graph retourne une @odata.nextLink propriété dans la réponse qui contient une URL vers la page de résultats suivante. Vous pouvez récupérer la page de résultats suivante en envoyant la valeur d’URL de la propriété @odata.nextLink à Microsoft Graph. Microsoft Graph continuera à renvoyer une référence à la page de résultats suivante dans la @odata.nextLink propriété avec chaque réponse jusqu’à ce qu’il n’y ait plus de pages de résultats à récupérer. Pour lire tous les résultats, vous devez continuer à appeler Microsoft Graph avec la @odata.nextLink propriété retournée dans chaque réponse jusqu’à ce que la @odata.nextLink propriété ne soit plus retournée.

Par exemple, l’exemple suivant montre la pagination côté client où le client utilise le $top paramètre de requête pour demander jusqu’à cinq utilisateurs dans le locataire.

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

Si le résultat contient plus de résultats, Microsoft Graph renvoie une @odata.nextLink propriété similaire à la suivante, ainsi que la première page de résultats :

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

Vous devez inclure l’URL entière dans la @odata.nextLink propriété dans votre demande pour la page de résultats suivante. Selon l’API sur laquelle la requête est exécutée, la @odata.nextLink valeur d’URL contient un $skiptoken paramètre de requête ou .$skip L’URL contient également tous les autres paramètres de requête présents dans la demande d’origine. N’essayez pas d’extraire la valeur ou et $skip de l’utiliser $skiptoken dans une autre requête.

Le comportement de pagination varie en fonction des différentes API Microsoft Graph. Lorsque vous utilisez des données paginées, prenez en compte les éléments suivants :

  • Une page de résultats peut contenir zéro ou plusieurs résultats.
  • Des API différentes peuvent avoir des tailles de page par défaut et maximale différentes.
  • Des API différentes peuvent se comporter différemment si vous spécifiez une taille de page (via le paramètre de requête $top) qui dépasse la taille de page maximale pour cette API. En fonction de l’API, la taille de page demandée peut être ignorée, peut revenir à la taille de page maximale par défaut pour cette API ou Microsoft Graph peut renvoyer une erreur.
  • Toutes les ressources ou relations ne prennent pas en charge la pagination. Par exemple, les requêtes sur directoryRole ne prennent pas en charge la pagination. Cela inclut la lecture des objets de rôle eux-mêmes et des membres de rôle.
  • Lors de la pagination par rapport aux ressources d’annuaire, les en-têtes de requête personnalisés (en-têtes qui ne sont pas des en-têtes Authorization ou Content-Type), tels que l’en-tête ConsistencyLevel , ne sont pas inclus par défaut dans les demandes de page suivantes. Si ces en-têtes doivent être envoyés sur les requêtes suivantes, vous devez les définir de manière explicite.
  • Lorsque vous utilisez la $count=true chaîne de requête lors de l’interrogation sur des ressources d’annuaire, la @odata.count propriété est retournée uniquement dans la première page du jeu de résultats paginé.