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

  1. 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.

  2. 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

  1. Commencez avec une URL menant à un élément SharePoint donné. Par exemple : https://{site_url}/doclib/myDocument.docx

  2. 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/

  3. 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"
    
  4. Lisez la valeur de chiffrement de formulaire et les propriétés webFullUrl dans la réponse.

  5. Ajoutez le pointeur du service REST _api à la fin de l’URL web.

  6. 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.

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.

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.

Voir aussi