Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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 Ergebnisseite 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.
Fehlerbehandlung
Vermeiden von DirectoryPageTokenNotFoundException-Fehlern
Beim Paginieren großer Datenmengen tritt möglicherweise der Fehler auf, der DirectoryPageTokenNotFoundException
verhindert, dass die Client-App nachfolgende Seiten erfolgreich abruft. Dieser Fehler tritt auf, wenn die Client-App ein Token aus einem Wiederholungsvorgang verwendet, um die nächste Ergebnisseite anzufordern.
Um diesen Fehler zu vermeiden, verwenden Sie keine Token aus Wiederholungsvorgängen für nachfolgende Seitenanforderungen, da diese Token nicht garantiert für zukünftige Anforderungen gültig sind. Speichern Sie stattdessen das Token aus der letzten erfolgreichen Antwort, und verwenden Sie es für die nächste Seitenanforderung. Daher sollte der @odata.nextLink
für die Wiederholung verwendete Wert für die nachfolgende Seitenanforderung verwendet werden.
Beispielszenario
- Rufen Sie Seite 1 ab, und erhalten Sie das Token "Token1".
- Verwenden Sie "Token1", um Seite 2 anzufordern.
- Wenn ein Netzwerkfehler auftritt, wiederholen Sie die Anforderung.
- Während des Wiederholungsversuchs erhalten Sie das neue Token "RetryToken".
- Verwenden Sie "RetryToken" nicht, um Seite 3 anzufordern, da dies den
DirectoryPageTokenNotFoundException
Fehler verursachen kann. - Verwenden Sie stattdessen "Token1" (das Token aus der letzten erfolgreichen Antwort ohne Wiederholung), um Seite 3 anzufordern.
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.