Freigeben über


Adressieren von Ressourcen in einem Laufwerk auf OneDrive

Die OneDrive-API ermöglicht die Adressierung von zwei Aspekten einer Ressource über eine einzige URL:

  • Die driveItem-Ressource
  • Eine Eigenschaft, ein Facet oder eine Beziehung des Elements

Ein „item“-Facet repräsentiert ein Element der Ressource, z. B. die Bildmetadaten, Ordnermetadaten usw.

In diesem Beispiel kann eine kanonische URL für eine Datei folgendermaßen aussehen.

https://graph.microsoft.com/v1.0/me/drive/root:/Documents/MyFile.xlsx:/content

Diese Beispiel-URL besteht aus diesen Komponenten:

  • https://graph.microsoft.com/v1.0 – Die verwendete Version von Microsoft Graph.
  • /me – Eine hochrangige Microsoft Graph-Ressource, die adressiert wird, in diesem Fall der aktuelle Benutzer.
  • /drive – Das Standardlaufwerk für die vorherige Ressource, in diesem Fall das OneDrive des Benutzers.
  • /root – Der Stammordner des Laufwerks.
  • :/Documents/MyFile.xlsx:: : um /Documents/MyFile.xlsx stellt einen Switch zur pfadbasierten Adressierungssyntax dar. Alles zwischen den zwei Doppelpunkten wird als Pfad relativ zum Element vor dem Pfad (in diesem Fall das Stammelement) behandelt.
  • /content – Steht für den standardmäßigen binären Stream für die Datei. Sie können auch andere Eigenschaften oder Beziehungen für das Element adressieren.

ID-basierte Adressierung

OneDrive unterstützt die ID-basierten Adressierung von Elementen. Elemente sind einer eindeutigen ID zugewiesen, wenn sie erstellt werden, und die ID bleibt über alle Aktionen, die ein Benutzer mit dem Element ausführt, bestehen. Das Umbenennen oder Verschieben des Elements ändert nicht die Element-ID.

ID-basierte Adressierung ist ein nützliches Verfahren zum Nachverfolgen von Elementen, die vom Benutzer an verschiedene Positionen auf OneDrive verschoben werden können. Solange Sie die Element-ID kennen und das Element vorhanden ist, können Sie es finden.

Pfadbasierte Adressierung

OneDrive unterstützt auch die pfadbasierte Adressierung. Dies ermöglicht Ihnen die Verwendung einer benutzerfreundlichen URL-Syntax zur Adressierung von Elementen in Bezug auf die Hierarchie von Elementen, die in OneDrive sichtbar sind. Wenn Sie zu einem Element die Hierarchie kennen, können Sie dieses Element direkt adressieren, ohne wiederholte Aufrufe zur Ermittlung jeder Hierarchieebene durchführen zu müssen.

Da jedoch die pfadbasierte Adressierung auf dem Namen des Elements beruht, führt das Umbenennen oder Verschieben des Elements an eine neue Position auch zu einer Änderung des Pfads.

Die pfadbasierte Adressierung kann in Bezug auf ein beliebiges Element in OneDrive verwendet werden, was einige sehr hilfreiche Szenarien möglich macht. Z. B. können Sie bei der Arbeit mit freigegebenen Ordnern eine pfadbasierte URL bezüglich der Element-ID des freigegebenen Ordners verwenden, um Inhalte in den freigegebenen Ordnern anhand des Pfads zu adressieren.

Beispiele

In diesen Beispielen werden die verschiedenen URL-Formate dargestellt, die für den Zugriff auf Daten verwendet werden können. Alle diese URLs sind logisch gleichwertig und geben den Inhalt der Datei MyFile.xlsx zurück.

Beispiel-URL Beschreibung
/drive/root:/Documents/MyFile.xlsx:/content Durch den Pfad in Bezug auf das Stammelement eines Laufwerks angegeben.
/drive/special/documents:/MyFile.xlsx:/content Durch den Dateinamen im speziellen Ordner documents angegeben.
/drive/items/0123456789AB/content Durch die Element-ID angegeben.
/drives/AB0987654321/items/0123456789AB/content Durch die Laufwerk-ID und Element-ID angegeben.

Pfadcodierung

OneDrive unterstützt die Adressierung von Dateien und Ordnern über den Pfad des Elements im OneDrive des Benutzers. Da der Pfad jedoch vom Benutzer angegebene Inhalte umfasst, die möglicherweise nicht-URL-fähige Zeichen umfassen, sollten Sie die richtige Codierung aller Pfadsegmente sicherstellen.

Microsoft Graph erwartet, dass URLs den Vorgaben von RFC 3986 entsprechen. Im Folgenden finden Sie eine Übersicht zur richtigen Codierung von Pfaden für Microsoft Graph.

Für OneDrive reservierte Zeichen

Die folgenden Zeichen sind für OneDrive reservierte Zeichen und dürfen nicht für OneDrive-Ordner- und -Dateinamen verwendet werden.

  onedrive-reserved  = "/" / "\" / "*" / "<" / ">" / "?" / ":" / "|"
  onedrive-business-reserved
                     = "/" / "\" / "*" / "<" / ">" / "?" / ":" / "|" / "#" / "%"

Hinweis: Ordnernamen dürfen nicht mit einem Punkt (.) enden.

Hinweis: OneDrive for Business-Dateien oder Ordnernamen dürfen nicht mit einer Tilde („~“) beginnen. Weitere Informationen finden Sie unter Einschränkungen und Grenzen mit OneDrive for Business.

Zeichen für URI-Pfade

Bei der Erstellung des Pfadsegments einer URL für die OneDrive-API sind die folgenden Zeichen für Pfadnamen zulässig, basierend auf URI RFC.

  pchar       = unreserved / pct-encoded / sub-delims / ":" / "@"
  pct-encoded = "%" HEXDIG HEXDIG
  unreserved  = ALPHA / DIGIT / "-" / "." / "_" / "~"
  sub-delims  = "!" / "$" / "&" / "'" / "(" / ")"
              / "*" / "+" / "," / ";" / "="

Zeichen für Elementnamen, die nicht in der Gruppe pchar enthalten sind, z. B. # und (Leerzeichen), müssen Prozent-codiert werden.

Codieren von Zeichen

Microsoft Graph verwendet die standardmäßige Prozent-Codierung, bei der nicht-URL-fähige Zeichen mit einem % und dem UTF-8-Zeichencode für das Zeichen codiert werden. Beispiel:

  • " " ->%20
  • "#" ->%23

Häufige Fehler bei der URL-Codierung

Sie können nicht die gesamte URL in einem Aufruf codieren, da die Regeln zur Codierung für jedes Segment einer URL unterschiedlich lauten. Ohne die richtige Codierung ist die nicht codierte URL nicht eindeutig im Hinblick darauf, welche Segmente welche Inhalte enthalten. Daher müssen Sie den URL-Pfad beim Erstellen der URL-Zeichenfolge codieren.

Beispiel: Statt diesem:

string url = url_encode("https://api.onedrive.com/v1.0/drive/root:/" + path + ":/children")

Schreiben Sie Folgendes:

string url = "https://api.onedrive.com/v1.0/drive/root:/" + url_path_encode(path) + ":/children")

Nicht alle URL-Codierungs-Bibliotheken berücksichtigen jedoch alle Anforderungen der standardmäßigen URL-Pfad-Codierung.

.NET/C-Sharp/Visual Basic

Die .NET-Klassen für HttpUtility und Uri enthalten verschiedene Methoden für die URL-Codierung. Keine dieser Methoden codiert jedoch alle reservierte Zeichen für die Pfadkomponente einer URL (einschließlich HttpUtility.UrlPathEncode) richtig.

Statt dieser Methoden sollten Sie UriBuilder zum Erstellen einer URL mit richtigen Escape-Zeichen verwenden.

UriBuilder builder = new UriBuilder("https://api.onedrive.com");
builder.Path = "/v1.0/drive/root:/Documents/My Files/#nine.docx";
Uri url = builder.Uri;

Objective-C/iOS

Verwenden Sie für die Objective-C-, iOS- und Mac OS X-Entwicklung die stringByAddingPercentEncodingWithAllowedCharacters-Methode und [NSCharacterSet URLPathAllowedCharacterSet] zur ordnungsgemäßen Codierung der Pfadkomponente der URL.

NSString *root = @"https://api.onedrive.com/v1.0/drive/root:/";
NSString *path = @"Documents/My Files/#nine.docx";
NSString *encPath = [path stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLPathAllowedCharacterSet]];
NSURL *url = [[NSURL alloc] initWithString:[root stringByAppendingString:encPath]];

Android

Verwenden Sie die Uri.Builder-Klasse zur Erstellung einer ordnungsgemäß codierten URL.

Uri.Builder builder = new Uri.Builder();
builder.
  scheme("https").
  authority("api.onedrive.com").
  appendPath("v1.0").
  appendPath("drive").
  appendPath("root:").
  appendPath("Documents").
  appendPath("My Files").
  appendPath("#nine.docx");
String url = builder.build().toString();

JavaScript

Verwenden Sie escape() in JavaScript zur ordnungsgemäßen Codierung einer Pfadkomponente.

var root = "https://api.onedrive.com/v1.0/drive/root:";
var path = "/Documents/My Files/#nine.docx";
var url = root + escape(path);

Beispiele

Hier ist ein Beispiel eines OneDrive-Benutzers (Ryan) mit folgender Ordnerhierarchie:

OneDrive
	\Ryan's Files
		\doc (1).docx
    \estimate%s.docx
	\Break#Out
		\saved_game[1].bin

Um jede von Ryans Dateien zu adressieren, verwenden Sie die Prozent-Codierung wie folgt:

Pfad Codierte URL für Pfad
\Ryan's Files /root:/Ryan's%20Files
\...\doc (1).docx /root:/Ryan's%20Files/doc%20(1).docx
\...\estimate%.docx /root:/Ryan's%20Files/estimate%25s.docx
\Break#Out /root:/Break%23Out
\...\saved_game[1].bin /root:/Break%23Out/saved_game[1].bin