Partage via


Pagination des données Microsoft Graph dans votre application

La pagination implique la demande ou la réception de données par lots. Il s’agit d’une technique de performances cruciale pour gérer efficacement les jeux de données volumineux et qui permet d’améliorer les performances de votre application et le temps de réponse de Microsoft Graph.

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. Dans cet article, nous explorons le fonctionnement de la pagination pour Microsoft Graph et comment vous pouvez l’utiliser pour optimiser vos applications.

Remarque

Si vous recherchez des informations sur la pagination dans les Kits de développement logiciel (SDK) Microsoft Graph, consultez Page dans une collection à l’aide des KITS de développement logiciel (SDK) Microsoft Graph.

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

Fonctionnement de la pagination

Pagination côté serveur

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.

Lorsqu’au moins une page de données supplémentaire est disponible, Microsoft Graph renvoie une @odata.nextLink propriété dans la réponse qui contient une URL vers la page de résultats suivante. Vous utilisez cette URL pour interroger la page de résultats suivante. 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.

Pagination côté client

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.

Le reste de cet article explique comment implémenter la pagination côté client.

Implémentation de la pagination côté client

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"

Utilisez l’URL entière de la @odata.nextLink propriété dans une requête GET pour récupérer 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 Tous les autres paramètres de requête présents dans la requête d’origine sont également encodés dans cette URL. 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 travaillez avec des données paginées, tenez compte des points 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. La taille de page demandée peut être ignorée, elle peut être définie par défaut sur la taille de page maximale pour cette API, ou Microsoft Graph peut retourner 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é.