driveItem: delta
Namespace: microsoft.graph
Nachverfolgen von Änderungen in einem driveItem und seinen untergeordneten Elemente im Laufe der Zeit.
Die App ruft zunächst delta
ohne Parameter auf.
Der Dienst startet dann eine Enumeration der Laufwerkshierarchie und gibt Seiten mit Elementen sowie entweder einen @odata.nextLink
oder einen @odata.deltaLink
zurück, wie unten beschrieben.
Die App sollte die Aufrufe solange mit dem @odata.nextLink
fortführen, bis kein @odata.nextLink
mehr zurückgegeben wird oder bis eine Antwort mit einem leeren Satz an Änderungen zurückgegeben wird.
Sobald alle Änderungen empfangen wurden, können Sie sie auf den lokalen Zustand anwenden.
Wenn Sie zu einem späteren Zeitpunkt nochmals auf Änderungen prüfen möchten, rufen Sie erneut delta
auf, mit dem @odata.deltaLink
aus der vorherigen Antwort.
Gelöschte Elemente werden mit dem deleted
Facet zurückgegeben.
Elemente, für die diese Eigenschaft gesetzt ist, sollten Sie aus Ihrem lokalen Zustand entfernen.
Hinweis: Löschen Sie Ordner nur lokal, wenn sie nach der Synchronisierung aller Änderungen leer sind.
Berechtigungen
Wählen Sie die Berechtigung oder Berechtigungen aus, die für diese API als am wenigsten privilegiert markiert sind. Verwenden Sie eine höhere Berechtigung oder Berechtigungen nur, wenn Ihre App dies erfordert. Ausführliche Informationen zu delegierten Berechtigungen und Anwendungsberechtigungen finden Sie unter Berechtigungstypen. Weitere Informationen zu diesen Berechtigungen finden Sie in der Berechtigungsreferenz.
Berechtigungstyp | Berechtigungen mit den geringsten Berechtigungen | Berechtigungen mit höheren Berechtigungen |
---|---|---|
Delegiert (Geschäfts-, Schul- oder Unikonto) | Files.Read | Files.Read.All, Files.ReadWrite, Files.ReadWrite.All, Sites.Read.All, Sites.ReadWrite.All |
Delegiert (persönliches Microsoft-Konto) | Files.Read | Files.Read.All, Files.ReadWrite, Files.ReadWrite.All |
App | Files.Read.All | Files.ReadWrite.All, Sites.Read.All, Sites.ReadWrite.All |
HTTP-Anforderung
GET /drives/{drive-id}/root/delta
GET /groups/{groupId}/drive/root/delta
GET /me/drive/root/delta
GET /sites/{siteId}/drive/root/delta
GET /users/{userId}/drive/root/delta
Funktionsparameter
Parameter | Typ | Beschreibung |
---|---|---|
token | string | Optional. Falls nicht angegeben, wird der aktuelle Status der Hierarchie aufgelistet. Für latest wird eine leere Antwort mit dem neuesten Delta-Token zurückgegeben. Im Fall eines vorherigen Delta-Token wird der neue Status seit diesem Token zurückgegeben. |
Optionale Abfrageparameter
Diese Methode unterstützt die OData-Abfrageparameter von $select
, $expand
und $top
zur Anpassung der Antwort.
Anforderungsheader
Name | Beschreibung |
---|---|
Authorization | Bearer {token}. Erforderlich. Weitere Informationen zu Authentifizierung und Autorisierung. |
deltaExcludeParent | Zeichenfolge. Wenn dieser Anforderungsheader enthalten ist, enthält die Antwort die geänderten Elemente und nicht die übergeordneten Elemente in der Hierarchie. |
Anforderungstext
Geben Sie keinen Anforderungstext für diese Methode an.
Antwort
Bei Erfolg gibt diese Methode den Antwortcode 200 OK
und eine Sammlung von Ressourcen des Typs DriveItem im Antworttext zurück.
Zusätzlich zu der Sammlung von DriveItems enthält die Antwort außerdem eine der folgenden Eigenschaften:
Name | Wert | Beschreibung |
---|---|---|
@odata.nextLink | url | Eine URL zum Abrufen der nächsten verfügbaren Seite mit Änderungen, wenn im aktuellen Satz weitere Änderungen vorhanden sind. |
@odata.deltaLink | url | Eine URL, die anstelle eines @odata.nextLink zurückgegeben wird, sobald alle aktuellen Änderungen zurückgegeben wurden. Sie wird verwendet, um zu einem späteren Zeitpunkt den nächsten Satz von Änderungen zu lesen. |
Beispiele
Beispiel 1: Ursprüngliche Anforderung
Hier ist ein Beispiel dafür, wie Sie diese API aufrufen, um Ihren lokalen Zustand einzurichten.
Anforderung
Hier ist ein Beispiel für die erste Anforderung.
GET https://graph.microsoft.com/v1.0/me/drive/root/delta
Antwort
Das folgende Beispiel zeigt die Antwort.
HTTP/1.1 200 OK
Content-type: application/json
{
"value": [
{
"id": "0123456789abc",
"name": "folder2",
"folder": { }
},
{
"id": "123010204abac",
"name": "file.txt",
"file": { }
},
{
"id": "2353010204ddgg",
"name": "file5.txt",
"deleted": { }
}
],
"@odata.nextLink": "https://graph.microsoft.com/v1.0/me/drive/delta(token=1230919asd190410jlka)"
}
Diese Antwort enthält die erste Seite von Änderungen. Die Eigenschaft @odata.nextLink gibt an, dass im aktuellen Satz von Elementen weitere Elemente verfügbar sind. Die App sollte nun solange den URL-Wert von @odata.nextLink anfordern, bis alle Seiten von Elementen abgerufen wurden.
Beispiel 2: Letzte Seite in einem Satz
Hier ist ein Beispiel dafür, wie Sie diese API aufrufen, um Ihren lokalen Zustand zu aktualisieren.
Anforderung
Im Folgenden finden Sie eine Beispielanforderung nach der ersten Anforderung.
GET https://graph.microsoft.com/v1.0/me/drive/root/delta(token='MzslMjM0OyUyMzE7MzsyM2YwNDVhMS1lNmRmLTQ1N2MtOGQ5NS1hNmViZDVmZWRhNWQ7NjM3OTQzNzQwODQ3NTcwMDAwOzU4NTk2OTY0NDslMjM7JTIzOyUyMzA')
Antwort
Das folgende Beispiel zeigt die Antwort.
HTTP/1.1 200 OK
Content-type: application/json
{
"value": [
{
"id": "0123456789abc",
"name": "folder2",
"folder": { },
"deleted": { }
},
{
"id": "123010204abac",
"name": "file.txt",
"file": { }
}
],
"@odata.deltaLink": "https://graph.microsoft.com/v1.0/me/drive/root/delta?(token='MzslMjM0OyUyMzE7MzsyM2YwNDVhMS1lNmRmLTQ1N2MtOGQ5NS1hNmViZDVmZWRhNWQ7NjM3OTQzNzQwODQ3NTcwMDAwOzU4NTk2OTY0NDslMjM7JTIzOyUyMzA')"
}
Diese Antwort gibt an, dass im Zeitraum zwischen der ursprünglichen Anforderung und dieser Anforderung zur Aktualisierung des lokalen Zustands das Element folder2
gelöscht wurde und das Element file.txt
entweder hinzugefügt oder geändert wurde.
Die letzte Seite der Elemente enthält die Eigenschaft @odata.deltaLink, die die URL bereitstellt, die später zum Abrufen von Änderungen seit dem aktuellen Elementsatz verwendet werden kann.
Es kann vorkommen, dass der Dienst keine Liste der Änderungen für ein bestimmtes Token bereitstellen kann (z. B. wenn ein Client versucht, ein altes Token wiederzuverwenden, nachdem er längere Zeit nicht verbunden war, oder wenn sich der Serverstatus geändert hat und ein neues Token erforderlich ist).
In diesen Fällen gibt der Dienst einen HTTP 410 Gone
Fehler mit einer Fehlerantwort zurück, die einen der folgenden Fehlercodes enthält, und einen Location
Header mit einem neuen nextLink, der eine neue Deltaenumeration von Grund auf startet.
Nach Abschluss der vollständigen Enumeration die zurückgegebenen Elemente mit Ihrem lokalen Zustand vergleichen und diese Anweisungen befolgen.
Fehlertyp | Anweisungen |
---|---|
resyncChangesApplyDifferences |
Alle lokalen Elemente durch die Serverversion (einschließlich gelöschter Elemente) ersetzen, wenn sicher ist, dass der Dienst bei der letzten Synchronisierung mit den lokalen Änderungen aktualisiert wurde. Laden Sie alle lokalen Änderungen hoch, die dem Server noch nicht bekannt sind. |
resyncChangesUploadDifferences |
Alle lokalen Elemente hochladen, die der Dienst nicht zurückgegeben hat, und alle Dateien hochladen, die sich von der Serverversion unterscheiden (beide Kopien beibehalten, wenn nicht sicher ist, welche Version aktueller ist). |
Beispiel 3: Abrufen des aktuellen deltaLink
In einigen Fällen kann es sinnvoll sein, den aktuellen Wert von DeltaLink anzufordern, ohne zunächst die bereits auf dem Laufwerk vorhandenen Elemente aufzulisten.
Dies kann hilfreich sein, wenn die App nur über Änderungen informiert werden möchte und vorhandene Elemente keine Rolle spielen.
Rufen Sie zum Abrufen des aktuellen deltaLink delta
mit dem Abfragezeichenfolgenparameter ?token=latest
auf.
Hinweis: Wenn Sie versuchen, eine vollständige lokale Darstellung der Elemente in einem Ordner oder Laufwerk beizubehalten, müssen Sie
delta
für die anfängliche Enumeration verwenden. Andere Methoden, z. B. Auslagerung über diechildren
-Sammlung eines Ordners, geben nicht unbedingt jedes einzelne Element zurück, wenn während der Enumeration ein Schreibvorgang ausgeführt wird. Die Verwendung vondelta
ist die einzige Möglichkeit, um sicherzustellen, dass Sie alle benötigten Daten gelesen haben.
Anforderung
GET /me/drive/root/delta?token=latest
Antwort
HTTP/1.1 200 OK
Content-type: application/json
{
"value": [ ],
"@odata.deltaLink": "https://graph.microsoft.com/v1.0/me/drive/root/delta?token=1230919asd190410jlka"
}
Beispiel 4: Abrufen von Delta-Ergebnissen mithilfe eines Zeitstempels
In einigen Szenarien kennt der Client möglicherweise den Zustand eines Laufwerks bis zu einem bestimmten Zeitpunkt, verfügt zu diesem Zeitpunkt jedoch nicht über einen deltaLink. In diesem Fall kann der Client delta
mithilfe eines URL-codierten Zeitstempels für den Wert des token
Abfragezeichenfolgenparameters aufrufen, z. B. ?token=2021-09-29T20%3A00%3A00Z
oder "?token=2021-09-29T12%3A00%3A00%2B8%3A00".
Die Verwendung eines Zeitstempels anstelle eines Tokens wird nur für OneDrive for Business und SharePoint unterstützt.
Hinweis: Clients sollten nach Möglichkeit den deltaLink verwenden, der von
delta
Abfragen bereitgestellt wird, anstatt ein eigenes Token zu generieren. Diese Funktion sollte nur verwendet werden, wenn der deltaLink nicht bekannt ist.
Anforderung
GET /me/drive/root/delta?token=2021-09-29T20%3A00%3A00Z
Antwort
HTTP/1.1 200 OK
Content-type: application/json
{
"value": [
{
"id": "0123456789abc",
"name": "folder2",
"folder": { },
"deleted": { }
},
{
"id": "123010204abac",
"name": "file.txt",
"file": { }
}
],
"@odata.deltaLink": "https://graph.microsoft.com/v1.0/me/drive/root/delta?(token='1230919asd190410jlka')"
}
Hinweise
Der „delta“-Feed zeigt den aktuellen Zustand jedes Elements, nicht jede Änderung. Wenn ein Element beispielsweise zweimal umbenannt wurde, wird es nur einmal angezeigt, mit seinem neuesten Namen.
Ein Element kann mehrmals in einem delta-Feed aufgeführt werden, aus jeweils unterschiedlichen Gründen. Verwenden Sie das letzte Vorkommen in der Auflistung.
Die
parentReference
Eigenschaft für Elemente enthält keinen Wert für Pfad. Dies liegt daran, dass das Umbenennen eines Ordners nicht dazu führt, dass von DeltaNachfolger des Ordners zurückgegeben werden. Bei Verwendung von „delta“ sollten Sie Elemente immer anhand ihrer ID nachverfolgen.Die Delta-Abfrage gibt je nach Vorgangs- und Diensttyp einige DriveItem-Eigenschaften nicht zurück, wie in den folgenden Tabellen gezeigt.
OneDrive for Business
Typ des Vorgangs Eigenschaften, die von der Delta-Abfrage ausgelassen werden Create/Modify ctag
Delete ctag
,name
OneDrive (Consumer)
Typ des Vorgangs Eigenschaften, die von der Delta-Abfrage ausgelassen werden Create/Modify n/v Delete ctag
,size
Überprüfen von Berechtigungshierarchien
Standardmäßig enthält die Delta-Abfrageantwort Freigabeinformationen für alle Elemente in der Abfrage, die sich geändert haben, auch wenn sie ihre Berechtigungen von ihrem übergeordneten Element erben und selbst keine Änderungen an der direkten Freigabe vorgenommen haben. Dies führt in der Regel zu einem Folgeaufruf, um die Berechtigungsdetails für jedes Element und nicht nur für diejenigen abzurufen, deren Freigabeinformationen sich geändert haben. Sie können Ihre Kenntnisse über die Vorgehensweise von Berechtigungsänderungen optimieren, indem Sie die Prefer: hierarchicalsharing
-Kopfzeile zu Ihrer Delta Abfrageanforderung hinzufügen.
Wenn der Prefer: hierarchicalsharing
-Header bereitgestellt wird, werden Freigabeinformationen für den Stamm der Berechtigungshierarchie und Elemente zurückgegeben, die explizit Freigabeänderungen aufweisen. In Fällen, in denen die Freigabeänderung darin besteht, die Freigabe aus einem Element zu entfernen, finden Sie ein leeres Freigabefacet, um zwischen Elementen zu unterscheiden, die von ihrem übergeordneten Element erben, und Elementen, die eindeutig sind, aber keine Freigabelinks aufweisen. Dieses leere Freigabefacet wird auch im Stamm einer Berechtigungshierarchie angezeigt, die nicht freigegeben ist, um den anfänglichen Bereich einzurichten.
In vielen Überprüfungsszenarien möchten Sie vielleicht insbesondere Änderungen an Berechtigungen überprüfen. Wenn Sie in der Delta-Abfrageantwort deutlich machen möchten, welche Änderungen das Ergebnis der Berechtigungsänderungen sind, können Sie die Prefer: deltashowsharingchanges
-Kopfzeile angeben. Wenn dieser Header bereitgestellt wird, verfügen alle Elemente, die aufgrund von Berechtigungsänderungen in der Deltaabfrageantwort angezeigt werden, über die @microsoft.graph.sharedChanged":"True"
OData-Anmerkung. Dieses Feature ist für SharePoint und OneDrive for Business, aber nicht für OneDrive-Konten von Verbrauchern geeignet.
Hinweis
Für die Verwendung von
Prefer: deltashowsharingchanges
Header müssen SiePrefer: deltashowremovedasdeleted
undPrefer: deltatraversepermissiongaps
verwenden. Diese Kopfzeilenwerte können in einer einzigen Kopfzeile verbunden werden:Prefer: deltashowremovedasdeleted, deltatraversepermissiongaps, deltashowsharingchanges
.Um Berechtigungen ordnungsgemäß zu verarbeiten, muss Ihre Anwendung Sites.FullControl.All-Berechtigungen anfordern.
Weitere Informationen zu Scanszenarien finden Sie unter Bewährte Methoden zum Ermitteln von Dateien und Erkennen von Änderungen im großen Stil.
Fehlerantworten
Zusätzlich zu den vorstehend beschriebenen Fehlern bei der erneuten Synchronisierung finden Sie unter Fehlerantwortenweitere Informationen darüber, wie Fehler zurückgegeben werden.
Verwandte Inhalte
Verwenden der Deltaabfrage zum Nachverfolgen von Änderungen an Microsoft Graph Datenbewährten Methoden zum Ermitteln von Dateien und Erkennen von Änderungen im großen Stil