Naviguer dans la structure de données SharePoint représentée dans le service REST
Lorsque vous utilisez le service REST SharePoint, vous vous trouvez souvent dans une situation où vous connaissez l’URL d’un élément SharePoint spécifique, mais voulez accéder aux éléments associés, tels que la structure des dossiers ou des bibliothèques où réside cet élément. Par exemple, supposons que vous créez un complément dans lequel votre utilisateur entre l’URL d’un document d’une bibliothèque SharePoint. Votre complément doit alors décomposer cette URL pour déterminer l’URL réelle du site SharePoint. Une fois qu’il a terminé, le complément peut effectuer d’autres demandes pour l’utilisateur à partir du site, par exemple créer, mettre à jour ou supprimer des ressources ou des éléments associés.
Pour ce faire, votre complément doit envoyer une requête à SharePoint pour obtenir les informations suivantes :
- Les URL relatives au serveur du site et de la collection de sites contenant la ressource.
- Une valeur de chiffrement de formulaire pour vous permettre d’envoyer des requêtes modifiant l’état de la ressource, telles que POST, PUT, MERGE et DELETE.
Processus de base
Utilisez l’opérateur
/contextinfo
avec l’URL fournie pour accéder à l’adresse du site et de la collection de sites, ainsi qu’à la valeur de chiffrement de formulaire. Utilisez l’opérateur/contextinfo
au format suivant :POST https://{site_url}/_api/contextinfo Authorization: "Bearer " + accessToken Accept: "application/json;odata=verbose"
Pour renforcer la sécurité contre les attaques par scripts intersites, l’opérateur
/contextinfo
accepte uniquement les requêtes POST.Utilisez les propriétés d’objet SPContextWebInformation renvoyées par l’opérateur
/contextinfo
pour accéder à des ressources supplémentaires si vous le souhaitez.
L’essayer
Commencez avec une URL menant à un élément SharePoint donné. Par exemple : https://{site_url}/doclib/myDocument.docx
Retirez le nom de la ressource spécifique de la fin de l’URL, pour que celle-ci pointe vers une bibliothèque de documents, un dossier ou une liste. Dans ce cas : https://{site_url}/doclib/
Ajoutez le pointeur du service REST et l’opérateur
/contextinfo
à la fin de l’URL :POST https://{site_url}/_api/doclib/contextinfo Authorization: "Bearer " + accessToken Accept: "application/json;odata=verbose"
Lisez la valeur de chiffrement de formulaire et les propriétés webFullUrl dans la réponse.
Ajoutez le pointeur du service REST
_api
à la fin de l’URL web.Utilisez l’URL obtenue et la valeur de chiffrement de formulaire pour formuler des requêtes pour d’autres ressources dont vous avez besoin.
Conseil
Vous n’êtes pas obligé de transmettre la valeur de chiffrement de formulaire si vous créez des requêtes GET ou des requêtes qui utilisent un jeton OAuth.
Naviguer sur les sites parents et enfants
Quand vous naviguez dans la structure de votre site à l’aide du modèle objet serveur SharePoint, vous utilisez les propriétés SPWeb.ParentWeb et SPWeb.Webs pour accéder aux objets qui représentent des sites parents et enfants.
Les ressources REST correspondantes (web/parentweb
et web/webs
) ne renvoient pas d’objets représentant des sites. En effet, le service REST est conforme aux normes OData et le fait de renvoyer des représentations de site complètes rendrait ces requêtes inefficaces. Elles renvoient donc plutôt un objet WebInfo contenant les propriétés scalaires du site, mais sans ensembles d’entités associés comme des collections ou des collections de champs.
Pour accéder à un site parent ou enfant spécifique, vous devez composer l’URL REST appropriée pour ce site à l’aide de la propriété Id ou Title. À partir de là, vous pouvez accéder aux ensembles d’entités connexes de ce site.
Naviguer dans la structure des dossiers
Avec le service REST SharePoint, vous ne pouvez pas parcourir la hiérarchie des dossiers d’un site via la composition de l’URL. Pour cela, utilisez plutôt l’équivalent REST de la méthode Web.GetFolderByServerRelativeUrl. Par exemple :
Navigation non prise en charge par le biais du service REST :
https://{site_url}/_vti_bin/client.svc/web/lists/SharedDocuments/folder1/stuff/things/Recycle
Navigation prise en charge par le service REST :
https://{site_url}/_vti_bin/client.svc/web/GetFolderByServerRelativeUrl('SharedDocuments/folder1/stuff/things')/Recycle
Propriétés de l’objet SPContextWebInformation
Propriété SPContextWebInformation | Description |
---|---|
webFullUrl | Obtient l’URL relative au serveur du site le plus proche. |
siteFullUrl | Obtient l’URL relative au serveur de la racine de la collection de sites où se trouve le site. Si le site web le plus proche est la racine d’une collection de sites, la valeur de la propriété webFullUrl est égale à celle de la propriété siteFullUrl. |
formDigestValue | Obtient la valeur de chiffrement de formulaire de requête du serveur. |
LibraryVersion | Obtient la version actuelle de la bibliothèque REST. |
SupportedSchemaVersions | Obtient les versions du schéma de la bibliothèque REST/CSOM prises en charge. |
Objet WebInfo
Propriété WebInfo | Description |
---|---|
Created | Obtient une valeur qui indique la date de création du site. |
Description | Obtient ou définit la description du site. |
Id | Obtient une valeur qui spécifie l’identificateur du site. |
Language | Obtient une valeur qui spécifie l’ID local (LCID) pour la langue utilisée sur le site. |
LastItemModifiedDate | Obtient une valeur indiquant la date à laquelle un élément a été modifié pour la dernière fois sur le site. |
Titre | Obtient ou définit le titre du site. |
WebTemplateId | Renvoie l’identificateur du modèle de site. |