Adressage de ressources dans un lecteur sur OneDrive
L’API OneDrive permet à une URL unique de traiter deux aspects d’une ressource :
- Ressource driveItem
- Propriété, facette ou relation de l’élément
Une facette Item représente un élément de la ressource comme les métadonnées de l’image, les métadonnées du dossier, etc.
Dans cet exemple, une URL canonique pour un fichier peut ressembler à ceci.
https://graph.microsoft.com/v1.0/me/drive/root:/Documents/MyFile.xlsx:/content
Cet exemple d’URL comporte les éléments suivants :
https://graph.microsoft.com/v1.0
- Version de Microsoft Graph utilisée./me
- Ressources Microsoft Graph de niveau supérieur traitées, dans ce cas, l’utilisateur actuel./drive
- Lecteur par défaut pour la ressource précédente, dans ce cas, le OneDrive de l’utilisateur./root
- Dossier racine du lecteur.:/Documents/MyFile.xlsx:
- Le signe: :
autour de/Documents/MyFile.xlsx
représente un transfert vers la syntaxe d’adressage basée sur le chemin d’accès. Tout élément inclus entre les deux signes deux-points est traité comme un chemin d’accès relatif à l’élément avant le chemin d’accès (dans ce cas, la racine)./content
- Représente le flux binaire par défaut pour le fichier. Vous pouvez également traiter d’autres propriétés ou relations de l’élément.
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.
L’adressage basé sur le chemin d’accès peut être utilisé par rapport à n’importe quel élément dans OneDrive, ce qui permet de concevoir des scénarios très utiles. 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
Ces exemples décrivent les différents formats d’URL qui peuvent être utilisés 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 inclut le contenu spécifié par l’utilisateur qui peut éventuellement comprendre des caractères non sécurisés, vous devez vérifier que le codage de chaque segment du chemin d’accès est correct.
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 (.
).
Remarque : Les noms de fichiers et de dossiers OneDrive Entreprise ne peuvent pas commencer par un tilde ('~ '). Consultez la rubrique Restrictions et limites relatives à OneDrive Entreprise pour plus d’informations.
Caractères de chemin d’accès à l’URI
Lorsque vous créez le segment du chemin d’accès à l’URL pour l’API OneDrive, les caractères suivants sont autorisés pour les noms de chemin d’accès, en fonction des règles RFC de l’URI.
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://api.onedrive.com/v1.0/drive/root:/" + path + ":/children")
Écrivez ceci :
string url = "https://api.onedrive.com/v1.0/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://api.onedrive.com");
builder.Path = "/v1.0/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://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
Utilisez la classe Uri.Builder
pour créer une URL codée correctement.
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
Utilisez escape()
dans JavaScript pour coder correctement un composant du chemin d’accès.
var root = "https://api.onedrive.com/v1.0/drive/root:";
var path = "/Documents/My Files/#nine.docx";
var url = root + escape(path);
Exemples
Voici un exemple d’utilisateur OneDrive (Ryan) avec la hiérarchie de dossiers suivante :
OneDrive
\Ryan's Files
\doc (1).docx
\estimate%s.docx
\Break#Out
\saved_game[1].bin
Pour traiter chaque fichier de Ryan, utilisez le codage en pourcentage, comme suit :
Chemin | URL codée pour le chemin d’accès |
---|---|
\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 |