Paging der Microsoft Graph-Daten in Ihrer App
Paging umfasst das Anfordern oder Empfangen von Daten in Batches. Es handelt sich um eine Leistungstechnik, die für die effiziente Verarbeitung großer Datasets von entscheidender Bedeutung ist und die Leistung Ihrer App und die Antwortzeit von Microsoft Graph verbessert.
Einige GET-Abfragen für Microsoft Graph geben mehrere Seiten mit Daten zurück, entweder aufgrund von serverseitigem Paging oder clientseitigem Paging. In diesem Artikel erfahren Sie, wie Paging für Microsoft Graph funktioniert und wie Sie es verwenden können, um Ihre Anwendungen zu optimieren.
Hinweis
Informationen zum Paging in Microsoft Graph SDKs finden Sie unter Seite durch eine Sammlung mit den Microsoft Graph SDKs.
Weitere Informationen zur Paginierung finden Sie im folgenden Video.
Funktionsweise des Pagings
Serverseitiges Paging
Beim serverseitigen Paging gibt der Microsoft Graph-Dienst eine Standardanzahl von Ergebnissen auf einer einzelnen Seite zurück, ohne dass der Client die Anzahl der zurückzugebenden Ergebnisse mithilfe $top
von angibt. Der Endpunkt gibt beispielsweise GET /users
einen Standardwert von 100 Ergebnissen auf einer einzelnen Seite zurück.
Wenn mindestens eine weitere Datenseite verfügbar ist, gibt Microsoft Graph eine @odata.nextLink
Eigenschaft in der Antwort zurück, die eine URL zur nächsten Ergebnisseite enthält. Sie verwenden diese URL, um die nächste Ergebnisseite abzufragen. Microsoft Graph gibt mit jeder Antwort weiterhin einen Verweis auf die nächste Ergebnisseite in der @odata.nextLink
-Eigenschaft zurück, bis keine weiteren Ergebnisseiten mehr abgerufen werden. Um alle Ergebnisse zu lesen, müssen Sie Weiterhin Microsoft Graph mit der eigenschaft aufrufen, die @odata.nextLink
in jeder Antwort zurückgegeben wird, bis die @odata.nextLink
Eigenschaft nicht mehr zurückgegeben wird.
Clientseitiges Paging
Beim clientseitigen Paging gibt eine Client-App mithilfe der Abfrageparameter $top, $skip oder $skipToken die Anzahl der Ergebnisse an, die Microsoft Graph auf einer einzelnen Seite zurückgeben soll. Die Unterstützung für clientseitiges Paging, einschließlich der Anzahl der Ergebnisse, die der Client auf einer einzelnen Seite anfordern kann, hängt von der API und der ausgeführten Abfrage ab. Der Endpunkt unterstützt $top
z. B. /users
, aber nicht $skip
.
Im weiteren Verlauf dieses Artikels wird beschrieben, wie Clientseitiges Paging implementiert wird.
Implementieren von clientseitigem Paging
Das folgende Beispiel zeigt clientseitiges Paging, bei dem der Client den $top
Abfrageparameter verwendet, um bis zu fünf Benutzer im Mandanten anzufordern.
GET https://graph.microsoft.com/v1.0/users?$top=5
Wenn das Ergebnis mehr Ergebnisse enthält, gibt Microsoft Graph zusammen mit der ersten Ergebnisseite eine @odata.nextLink
Eigenschaft ähnlich der folgenden zurück:
"@odata.nextLink": "https://graph.microsoft.com/v1.0/users?$top=5&$skiptoken=RFNwdAIAAQAAAD8...AAAAAAAA"
Verwenden Sie die gesamte URL in der @odata.nextLink
-Eigenschaft in einer GET-Anforderung, um die nächste Ergebnisseite abzurufen. Abhängig von der API, für die die Abfrage ausgeführt wird, enthält der @odata.nextLink
URL-Wert entweder einen $skiptoken
oder einen $skip
Abfrageparameter. Alle anderen Abfrageparameter, die in der ursprünglichen Anforderung vorhanden waren, werden ebenfalls in dieser URL codiert. Versuchen Sie nicht, den $skiptoken
Wert oder $skip
zu extrahieren und in einer anderen Anforderung zu verwenden.
Das Paging-Verhalten variiert in den verschiedenen Microsoft Graph-APIs. Berücksichtigen Sie beim Arbeiten mit ausgelagerten Daten die folgenden Punkte:
- Eine Seite mit Ergebnissen kann null oder mehr Ergebnisse enthalten.
- Unterschiedliche APIs weisen möglicherweise unterschiedliche Standard- und Maximalgrößen für Seiten auf.
- Unterschiedliche APIs verhalten sich möglicherweise unterschiedlich, wenn Sie eine Seitengröße (über den
$top
-Abfrageparameter) angeben, der die maximale Seitengröße für diese API überschreitet. Die angeforderte Seitengröße wird möglicherweise ignoriert, die maximale Seitengröße für diese API wird standardmäßig verwendet, oder Microsoft Graph gibt einen Fehler zurück. - Nicht alle Ressourcen oder Beziehungen unterstützen Paging. Beispielsweise unterstützen Abfragen für directoryRole kein Paging. Dies schließt das Lesen von Rollenobjekten selbst und Rollenmitgliedern ein.
- Beim Paginieren von Verzeichnisressourcen werden alle benutzerdefinierten Anforderungsheader (header, die keine Authorization- oder Content-Type-Header sind) wie der ConsistencyLevel-Header nicht standardmäßig in nachfolgende Seitenanforderungen eingeschlossen. Wenn diese Header bei nachfolgenden Anforderungen gesendet werden müssen, müssen Sie sie explizit festlegen.
- Wenn Sie die
$count=true
Abfragezeichenfolge beim Abfragen von Verzeichnisressourcen verwenden, wird die@odata.count
Eigenschaft nur auf der ersten Seite des ausgelagerten Resultsets zurückgegeben.
Verwandte Inhalte
- Microsoft Graph SDKs stellen Klassen und Methoden bereit, die beim Paging helfen. Weitere Informationen finden Sie unter Seite durch eine Sammlung mit den Microsoft Graph SDKs.