Adressage des ressources dans un lecteur sur OneDrive

Découvrez comment accéder aux éléments d’un lecteur sur OneDrive avec l’adressage basé sur l’ID et le chemin d’accès, et comment encoder correctement les chemins d’accès pour Microsoft Graph.

Adressage basé sur l’ID

OneDrive prend en charge l’adressage des éléments basé sur l’ID. Les éléments reçoivent un identificateur unique lorsqu’ils sont créés et l’ID est conservé pour les actions qu’un utilisateur réalise sur l’élément. L’attribution d’un nouveau nom ou le déplacement de l’élément ne modifie pas l’ID de l’élément.

L’adressage basé sur l’ID est utile pour suivre les éléments qui peuvent être déplacés par l’utilisateur à différents emplacements sur OneDrive. Tant que vous disposez de l’ID de l’élément et que l’élément existe, vous pouvez le retrouver.

Adressage basé sur le chemin d’accès

OneDrive prend également en charge l’adressage basé sur le chemin d’accès. Ainsi, vous pouvez utiliser une syntaxe URL conviviale pour traiter les éléments relatifs à la hiérarchie des éléments visibles dans OneDrive. Si vous connaissez la hiérarchie d’un élément, vous pouvez traiter directement cet élément et éviter d’effectuer des appels répétés pour découvrir chaque niveau de la hiérarchie.

Toutefois, étant donné que l’adressage basé sur le chemin d’accès dépend du nom de l’élément, l’attribution d’un nouveau nom ou le déplacement de l’élément vers un nouvel emplacement entraîne la modification du chemin d’accès de l’élément.

Vous pouvez utiliser l’adressage basé sur le chemin d’accès par rapport à n’importe quel élément dans OneDrive. Par exemple, lorsque vous utilisez des dossiers partagés, vous pouvez utiliser une URL basée sur le chemin d’accès relative à l’ID d’élément du dossier partagé pour traiter un élément dans le dossier partagé par chemin d’accès.

Exemples

Les exemples suivants montrent les différents formats d’URL disponibles pour accéder aux données. Toutes ces URL sont logiquement équivalentes et renvoient le contenu de MyFile.xlsx.

Exemple d’URL Description
/drive/root:/Documents/MyFile.xlsx:/content Spécifié par chemin d’accès par rapport à la racine d’un lecteur.
/drive/special/documents:/MyFile.xlsx:/content Spécifié par nom de fichier dans le dossier spécifique documents.
/drive/items/0123456789AB/content Spécifié par ID de l’élément.
/drives/AB0987654321/items/0123456789AB/content Spécifié par ID du lecteur et ID de l’élément.

Codage du chemin d’accès

OneDrive prend en charge l’adressage des fichiers et des dossiers à l’aide du chemin d’accès de l’élément dans le OneDrive de l’utilisateur. Toutefois, étant donné que le chemin d’accès contient du contenu spécifié par l’utilisateur, qui peut potentiellement contenir des caractères qui ne sont pas sécurisés pour l’URL, vous devez garantir un encodage correct des segments de chemin d’accès.

Pour Microsoft Graph, les URL doivent être conformes à RFC 3986. Vous trouverez ci-dessous un résumé sur la façon de coder correctement les chemins d’accès pour Microsoft Graph.

Caractères OneDrive réservés

Les caractères suivants sont des caractères OneDrive réservés et ne peuvent pas être utilisés dans le dossier et les noms de fichiers OneDrive.

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

Remarque

  • Les noms de dossiers ne peuvent pas se terminer par un point (.).
  • Les noms de fichiers ou de dossiers ne peuvent pas commencer par un tilde (« ~ »).

Pour plus d’informations, consultez Restrictions et limitations lorsque vous synchronisez des bibliothèques SharePoint avec votre ordinateur via OneDrive pour le travail ou l’école.

Caractères de chemin d’accès à l’URI

Lors de la construction du segment de chemin d’accès d’une URL pour l’API Microsoft Graph, les caractères suivants sont autorisés pour les noms de chemin d’accès, en fonction de l’URI de RFC.

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

Les caractères du nom de l’élément, qui ne sont pas inclus dans le groupe pchar, comme # et (espace), doivent être codés en pourcentage.

Codage des caractères

Microsoft Graph utilise un codage standard en pourcentage, où les caractères non valides de l’URL sont codés avec un %, puis un code UTF-8 pour le caractère. Par exemple :

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

Erreurs courantes de codage d’URL

Il n’est pas possible de coder une URL dans son intégralité dans un seul appel, car les règles de codage pour chaque segment d’une URL sont différentes. Sans codage approprié, l’URL non codée n’indiquera pas clairement quels segments contiennent quel contenu. Ainsi, vous devez coder le chemin d’accès à l’URL lorsque vous créez votre chaîne d’URL.

Par exemple, au lieu d’écrire ce qui suit :

string url = url_encode("https://graph.microsoft.com/v1.0/me/drive/root:/" + path + ":/children")

Écrivez ceci :

string url = "https://graph.microsoft.com/v1.0/me/drive/root:/" + url_path_encode(path) + ":/children")

Toutefois, toutes les bibliothèques de codage d’URL ne respectent pas toutes les exigences de codage standard du chemin d’URL.

.NET / C-Sharp / Visual Basic

Les classes .NET pour HttpUtility et Uri comprennent différentes méthodes de codage d’URL. Toutefois, aucune de ces méthodes ne permet de coder correctement tous les caractères réservés pour le composant du chemin d’accès à l’URL (y compris HttpUtility.UrlPathEncode).

Au lieu d’utiliser ces méthodes, utilisez UriBuilder pour concevoir une URL correctement formulée.

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

Objective-C / iOS

Pour le développement d’Objective-C, d’iOS et de Mac OS X, utilisez la méthode stringByAddingPercentEncodingWithAllowedCharacters et [NSCharacterSet URLPathAllowedCharacterSet] pour coder correctement le composant du chemin d’accès à l’URL.

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

Android

Utilisez la classe Uri.Builder pour créer une URL codée correctement.

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

JavaScript

Utilisez escape() dans JavaScript pour coder correctement un composant du chemin d’accès.

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

Exemples

Voici un exemple d’utilisateur OneDrive (Adele) avec la hiérarchie de dossiers suivante :

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

Pour traiter chacun des fichiers d’Adele, utilisez l’encodage en pourcentage, comme suit :

Chemin URL codée pour le chemin d’accès
\Adele's Files /root:/Adele's%20Files
\...\doc (1).docx /root:/Adele's%20Files/doc%20(1).docx
\...\estimate%.docx /root:/Adele's%20Files/estimate%25s.docx
\Break#Out /root:/Break%23Out
\...\saved_game[1].bin /root:/Break%23Out/saved_game[1].bin