Dient zum Abrufen inkrementeller Änderungen für Benutzer.
Artikel
Mit der Delta-Abfrage in Microsoft Graph können Sie über eine Reihe von Deltaanforderungen Ergänzungen, Löschungen oder Updates für unterstützte Ressourcen abfragen. Bei Benutzern können Sie mit der Delta-Abfrage Änderungen feststellen, ohne den gesamten Satz von Benutzern abrufen zu müssen, um Änderungen zu vergleichen.
Clients, die Benutzer mit einem lokalen Profilspeicher synchronisieren, können die Delta-Abfrage sowohl für ihre anfängliche vollständige Synchronisierung als auch für nachfolgende schrittweise erfolgende Synchronisierungen verwenden. In der Regel führt ein Client eine anfängliche vollständige Synchronisierung aller Benutzer in einem Mandanten durch und ruft dann in regelmäßigen Abständen inkrementelle Änderungen an Benutzern ab.
Nachverfolgen von Änderungen an Benutzern
Nachverfolgen von Benutzeränderungen über eine oder mehrere GET-Anforderungen mit der Delta-Funktion. Die GET-Anforderung weist die folgenden Merkmale auf:
Die Delta-Funktion , die dem URL-Pfad vorangestellt ist.
Ein Zustandstoken (Deltatoken oder skipToken) aus dem vorherigen Aufruf der GET-Deltafunktion .
[Optional] Alle unterstützten Abfrageparameter
Beispiel
Dieser Artikel zeigt eine Reihe von Beispielanforderungen zum Nachverfolgen von Änderungen an Benutzern:
Um Änderungen in der Benutzerressource nachzuverfolgen, stellen Sie eine Anforderung, und schließen Sie die Delta-Funktion als URL-Segment ein.
Tipp
/delta ist eine Verknüpfung für den vollqualifizierten Namen /microsoft.graph.delta. Von Microsoft Graph SDKs generierte Anforderungen verwenden den vollqualifizierten Namen.
Beachten Sie die folgenden Elemente:
Der optionale $select-Abfrageparameter wird in die Anforderung eingeschlossen, um zu veranschaulichen, wie Abfrageparameter automatisch in zukünftige Anforderungen eingeschlossen werden. Falls erforderlich, müssen Abfrageparameter in der anfänglichen Anforderung angegeben werden.
Nur eigenschaften, die in $select enthalten sind, werden auf Änderungen nachverfolgt. Wenn $select nicht angegeben ist, werden alle Eigenschaften des Objekts auf Änderungen nachverfolgt.
Die ursprüngliche Anforderung enthält keinen Zustands-Token. Zustandstoken werden in nachfolgenden Anforderungen verwendet.
GET https://graph.microsoft.com/v1.0/users/delta?$select=displayName,givenName,surname
// Code snippets are only available for the latest version. Current version is 5.x
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.Users.Delta.GetAsDeltaGetResponseAsync((requestConfiguration) =>
{
requestConfiguration.QueryParameters.Select = new string []{ "displayName","givenName","surname" };
});
// Code snippets are only available for the latest major version. Current major version is $v1.*
// Dependencies
import (
"context"
msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go"
graphusers "github.com/microsoftgraph/msgraph-sdk-go/users"
//other-imports
)
requestParameters := &graphusers.UsersDeltaWithRequestBuilderGetQueryParameters{
Select: [] string {"displayName","givenName","surname"},
}
configuration := &graphusers.UsersDeltaWithRequestBuilderGetRequestConfiguration{
QueryParameters: requestParameters,
}
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=go
delta, err := graphClient.Users().Delta().GetAsDeltaGetResponse(context.Background(), configuration)
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
var result = graphClient.users().delta().get(requestConfiguration -> {
requestConfiguration.queryParameters.select = new String []{"displayName", "givenName", "surname"};
});
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph import GraphServiceClient
from msgraph.generated.users.delta.delta_request_builder import DeltaRequestBuilder
from kiota_abstractions.base_request_configuration import RequestConfiguration
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
query_params = DeltaRequestBuilder.DeltaRequestBuilderGetQueryParameters(
select = ["displayName","givenName","surname"],
)
request_configuration = RequestConfiguration(
query_parameters = query_params,
)
result = await graph_client.users.delta.get(request_configuration = request_configuration)
Wenn die Methode erfolgreich verläuft, werden der Antwortcode 200 OK und das user-Sammlungsobjekt im Antworttext zurückgegeben. Wenn der gesamte Benutzersatz zu groß ist, enthält die Antwort ein @odata.nextLink Zustandstoken in einem @odata.nextLink Parameter.
In diesem Beispiel wird eine @odata.nextLink URL zurückgegeben, die angibt, dass in der Sitzung weitere Seiten mit Daten abgerufen werden müssen. Beachten Sie die $skiptoken in der URL. Der $select Abfrageparameter aus der ursprünglichen Anforderung wird in der @odata.nextLink URL codiert.
Die Antwort enthält auch eine @removed Anmerkung für einen Benutzer mit der ID 86462606-fde0-4fc4-9e0c-a20eb73e54c6. Die @removed Anmerkung wird in den folgenden Szenarien hinzugefügt:
Wenn der Benutzer gelöscht wurde, enthält das Element eine Anmerkung: @removed mit einem Wert von "reason": "changed".
Wenn der Benutzer endgültig gelöscht wird, enthält das Element eine Anmerkung: @removed mit dem "reason": "deleted"Wert .
Wenn der Benutzer erstellt oder aus dem Container für gelöschte Elemente wiederhergestellt wird, gibt es keine Anmerkung.
Die zweite Anforderung gibt das aus der vorherigen Antwort zurückgegebene skipToken an. Beachten Sie, dass der $select Parameter codiert und in der skipTokenenthalten ist.
GET https://graph.microsoft.com/v1.0/users/delta?$skiptoken=oEBwdSP6uehIAxQOWq_3Ksh_TLol6KIm3stvdc6hGhZRi1hQ7Spe__dpvm3U4zReE4CYXC2zOtaKdi7KHlUtC2CbRiBIUwOxPKLa
// Code snippets are only available for the latest version. Current version is 5.x
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
// Note: The URI string parameter used with WithUrl() can be retrieved using the OdataNextLink or OdataDeltaLink property from a response object
var result = await graphClient.Users.Delta.WithUrl("https://graph.microsoft.com/v1.0/users/delta?$skiptoken=oEBwdSP6uehIAxQOWq_3Ksh_TLol6KIm3stvdc6hGhZRi1hQ7Spe__dpvm3U4zReE4CYXC2zOtaKdi7KHlUtC2CbRiBIUwOxPKLa").GetAsDeltaGetResponseAsync();
// Code snippets are only available for the latest major version. Current major version is $v1.*
// Dependencies
import (
"context"
msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go"
graphusers "github.com/microsoftgraph/msgraph-sdk-go/users"
//other-imports
)
requestSkiptoken := "oEBwdSP6uehIAxQOWq_3Ksh_TLol6KIm3stvdc6hGhZRi1hQ7Spe__dpvm3U4zReE4CYXC2zOtaKdi7KHlUtC2CbRiBIUwOxPKLa"
requestParameters := &graphusers.UsersDeltaWithRequestBuilderGetQueryParameters{
Skiptoken: &requestSkiptoken,
}
configuration := &graphusers.UsersDeltaWithRequestBuilderGetRequestConfiguration{
QueryParameters: requestParameters,
}
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=go
delta, err := graphClient.Users().Delta().GetAsDeltaGetResponse(context.Background(), configuration)
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
com.microsoft.graph.users.delta.DeltaRequestBuilder deltaRequestBuilder = new com.microsoft.graph.users.delta.DeltaRequestBuilder("https://graph.microsoft.com/v1.0/users/delta?$skiptoken=oEBwdSP6uehIAxQOWq_3Ksh_TLol6KIm3stvdc6hGhZRi1hQ7Spe__dpvm3U4zReE4CYXC2zOtaKdi7KHlUtC2CbRiBIUwOxPKLa", graphClient.getRequestAdapter());
com.microsoft.graph.users.delta.DeltaGetResponse result = deltaRequestBuilder.get();
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph import GraphServiceClient
from msgraph.generated.users.delta.delta_request_builder import DeltaRequestBuilder
from kiota_abstractions.base_request_configuration import RequestConfiguration
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
query_params = DeltaRequestBuilder.DeltaRequestBuilderGetQueryParameters(
skiptoken = "oEBwdSP6uehIAxQOWq_3Ksh_TLol6KIm3stvdc6hGhZRi1hQ7Spe__dpvm3U4zReE4CYXC2zOtaKdi7KHlUtC2CbRiBIUwOxPKLa",
)
request_configuration = RequestConfiguration(
query_parameters = query_params,
)
result = await graph_client.users.delta.get(request_configuration = request_configuration)
Die Antwort enthält einen anderen @odata.nextLink mit einem neuen skipToken Wert, der angibt, dass weitere Änderungen, die für Benutzer nachverfolgt wurden, verfügbar sind. Verwenden Sie die @odata.nextLink URL in weiteren Anforderungen, bis @odata.deltaLink in der endgültigen Antwort eine URL (in einem @odata.deltaLink Parameter) zurückgegeben wird, auch wenn der Wert eine leere Anordnung ist.
GET https://graph.microsoft.com/v1.0/users/delta?$skiptoken=pqwSUjGYvb3jQpbwVAwEL7yuI3dU1LecfkkfLPtnIjtQ5LOhVoS7qQG_wdVCHHlbQpga7
// Code snippets are only available for the latest version. Current version is 5.x
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
// Note: The URI string parameter used with WithUrl() can be retrieved using the OdataNextLink or OdataDeltaLink property from a response object
var result = await graphClient.Users.Delta.WithUrl("https://graph.microsoft.com/v1.0/users/delta?$skiptoken=pqwSUjGYvb3jQpbwVAwEL7yuI3dU1LecfkkfLPtnIjtQ5LOhVoS7qQG_wdVCHHlbQpga7").GetAsDeltaGetResponseAsync();
// Code snippets are only available for the latest major version. Current major version is $v1.*
// Dependencies
import (
"context"
msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go"
graphusers "github.com/microsoftgraph/msgraph-sdk-go/users"
//other-imports
)
requestSkiptoken := "pqwSUjGYvb3jQpbwVAwEL7yuI3dU1LecfkkfLPtnIjtQ5LOhVoS7qQG_wdVCHHlbQpga7"
requestParameters := &graphusers.UsersDeltaWithRequestBuilderGetQueryParameters{
Skiptoken: &requestSkiptoken,
}
configuration := &graphusers.UsersDeltaWithRequestBuilderGetRequestConfiguration{
QueryParameters: requestParameters,
}
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=go
delta, err := graphClient.Users().Delta().GetAsDeltaGetResponse(context.Background(), configuration)
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
com.microsoft.graph.users.delta.DeltaRequestBuilder deltaRequestBuilder = new com.microsoft.graph.users.delta.DeltaRequestBuilder("https://graph.microsoft.com/v1.0/users/delta?$skiptoken=pqwSUjGYvb3jQpbwVAwEL7yuI3dU1LecfkkfLPtnIjtQ5LOhVoS7qQG_wdVCHHlbQpga7", graphClient.getRequestAdapter());
com.microsoft.graph.users.delta.DeltaGetResponse result = deltaRequestBuilder.get();
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph import GraphServiceClient
from msgraph.generated.users.delta.delta_request_builder import DeltaRequestBuilder
from kiota_abstractions.base_request_configuration import RequestConfiguration
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
query_params = DeltaRequestBuilder.DeltaRequestBuilderGetQueryParameters(
skiptoken = "pqwSUjGYvb3jQpbwVAwEL7yuI3dU1LecfkkfLPtnIjtQ5LOhVoS7qQG_wdVCHHlbQpga7",
)
request_configuration = RequestConfiguration(
query_parameters = query_params,
)
result = await graph_client.users.delta.get(request_configuration = request_configuration)
Diese Antwort enthält eine @odata.deltaLink URL, die angibt, dass keine Weiteren Daten zum vorhandenen Zustand der Benutzerobjekte vorhanden sind. Für zukünftige Anforderungen verwendet die Anwendung die @odata.deltaLink URL, um von weiteren Änderungen an Benutzern zu erfahren. Speichern Sie die deltatoken und verwenden Sie diese in der nachfolgenden Anforderungs-URL, um weitere Änderungen an Benutzern zu ermitteln.
Mithilfe von deltatoken aus der letzten Antwort erhalten Sie Änderungen (Ergänzungen, Löschungen oder Updates) an Benutzern seit der letzten Anforderung.
GET https://graph.microsoft.com/v1.0/users/delta?$deltatoken=oEcOySpF_hWYmTIUZBOIfPzcwisr_rPe8o9M54L45qEXQGmvQC6T2dbL-9O7nSU-njKhFiGlAZqewNAThmCVnNxqPu5gOBegrm1CaVZ-ZtFZ2tPOAO98OD9y0ao460
// Code snippets are only available for the latest version. Current version is 5.x
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
// Note: The URI string parameter used with WithUrl() can be retrieved using the OdataNextLink or OdataDeltaLink property from a response object
var result = await graphClient.Users.Delta.WithUrl("https://graph.microsoft.com/v1.0/users/delta?$deltatoken=oEcOySpF_hWYmTIUZBOIfPzcwisr_rPe8o9M54L45qEXQGmvQC6T2dbL-9O7nSU-njKhFiGlAZqewNAThmCVnNxqPu5gOBegrm1CaVZ-ZtFZ2tPOAO98OD9y0ao460").GetAsDeltaGetResponseAsync();
// Code snippets are only available for the latest major version. Current major version is $v1.*
// Dependencies
import (
"context"
msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go"
graphusers "github.com/microsoftgraph/msgraph-sdk-go/users"
//other-imports
)
requestDeltatoken := "oEcOySpF_hWYmTIUZBOIfPzcwisr_rPe8o9M54L45qEXQGmvQC6T2dbL-9O7nSU-njKhFiGlAZqewNAThmCVnNxqPu5gOBegrm1CaVZ-ZtFZ2tPOAO98OD9y0ao460"
requestParameters := &graphusers.UsersDeltaWithRequestBuilderGetQueryParameters{
Deltatoken: &requestDeltatoken,
}
configuration := &graphusers.UsersDeltaWithRequestBuilderGetRequestConfiguration{
QueryParameters: requestParameters,
}
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=go
delta, err := graphClient.Users().Delta().GetAsDeltaGetResponse(context.Background(), configuration)
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
com.microsoft.graph.users.delta.DeltaRequestBuilder deltaRequestBuilder = new com.microsoft.graph.users.delta.DeltaRequestBuilder("https://graph.microsoft.com/v1.0/users/delta?$deltatoken=oEcOySpF_hWYmTIUZBOIfPzcwisr_rPe8o9M54L45qEXQGmvQC6T2dbL-9O7nSU-njKhFiGlAZqewNAThmCVnNxqPu5gOBegrm1CaVZ-ZtFZ2tPOAO98OD9y0ao460", graphClient.getRequestAdapter());
com.microsoft.graph.users.delta.DeltaGetResponse result = deltaRequestBuilder.get();
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph import GraphServiceClient
from msgraph.generated.users.delta.delta_request_builder import DeltaRequestBuilder
from kiota_abstractions.base_request_configuration import RequestConfiguration
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
query_params = DeltaRequestBuilder.DeltaRequestBuilderGetQueryParameters(
deltatoken = "oEcOySpF_hWYmTIUZBOIfPzcwisr_rPe8o9M54L45qEXQGmvQC6T2dbL-9O7nSU-njKhFiGlAZqewNAThmCVnNxqPu5gOBegrm1CaVZ-ZtFZ2tPOAO98OD9y0ao460",
)
request_configuration = RequestConfiguration(
query_parameters = query_params,
)
result = await graph_client.users.delta.get(request_configuration = request_configuration)
Wenn Änderungen vorhanden sind, wird eine Auflistung geänderter Benutzerobjekte eingeschlossen. Die Antwort enthält zudem @odata.nextLink – falls mehrere Seiten mit Änderungen abgerufen werden müssen – oder @odata.deltaLink. Implementieren Sie das gleiche Muster, dem @odata.nextLink endgültigen Aufruf folgen und behalten Sie es für zukünftige Aufrufe @odata.deltaLink bei.
Hinweis
Bei dieser Anforderung kann es zu Replikationsverzögerungen für Benutzer kommen, die kürzlich erstellt, aktualisiert oder gelöscht wurden. Wiederholen Sie die @odata.nextLink oder @odata.deltaLink nach einiger Zeit, um die neuesten Änderungen abzurufen.