Navegar por la estructura de datos de SharePoint representada en el servicio REST
Cuando trabaja con el servicio REST de SharePoint, a menudo comenzará sabiendo la dirección URL de un elemento de SharePoint específico, pero quiere tener acceso a elementos relacionados, como la estructura de carpeta o de biblioteca donde reside el elemento. Por ejemplo, suponga que crea un complemento en el que el usuario escribe una dirección URL de un documento en una biblioteca de SharePoint. Después, el complemento deberá desglosar esa dirección URL para averiguar la dirección URL del sitio de SharePoint real. Una vez conseguido, el complemento puede realizar más solicitudes desde el sitio en nombre del usuario, como crear, actualizar o eliminar elementos o recursos relacionados.
Para ello, el complemento tiene que consultar la siguiente información en SharePoint:
- Las URL relativas al servidor del sitio y la colección de sitios que contiene el recurso
- Una síntesis de formulario para que pueda hacer solicitudes que modifiquen el estado del recurso, tales como POST, PUT, MERGE y DELETE.
Proceso básico
Use el operador
/contextinfo
con la dirección URL especificada para el acceso a las direcciones del sitio y de la colección de sitios, con la síntesis de formulario. Use el operador/contextinfo
en el siguiente formato:POST https://{site_url}/_api/contextinfo Authorization: "Bearer " + accessToken Accept: "application/json;odata=verbose"
Para mayor seguridad contra los intentos de scripting entre sitios, el operador
/contextinfo
solo acepta solicitudes POST.Si quiere, use las propiedades del objeto SPContextWebInformation que devuelve el operador
/contextinfo
para tener acceso a recursos adicionales.
Probarlo
Comenzar con una URL dada para un elemento de SharePoint dado. Por ejemplo: https://{site_url}/doclib/myDocument.docx
Quite el nombre del recurso específico del final de la dirección URL, de forma que la dirección de URL apunte a una biblioteca de documentos, una carpeta o una lista. En este caso: https://{site_url}/doclib/
Anexe el puntero del servicio REST y el operador
/contextinfo
a la dirección URL:POST https://{site_url}/_api/doclib/contextinfo Authorization: "Bearer " + accessToken Accept: "application/json;odata=verbose"
Lea la síntesis de formulario y las propiedades webFullUrl de la respuesta.
Anexe el puntero del servicio REST
_api
a la dirección URL de la web.Use la dirección URL resultante y la síntesis de formulario para realizar solicitudes a otros recursos que necesite.
Sugerencia
No tiene que pasar la síntesis de formulario si realiza solicitudes GET o solicitudes con un token OAuth validado.
Navegación por sitios primarios y secundarios
Cuando se navega por la estructura de un sitio con el modelo de objetos del servidor de SharePoint, se usan las propiedades SPWeb.ParentWeb y SPWeb.Webs para el acceso a objetos que representan sitios primarios y secundarios.
Los recursos de REST correspondientes, web/parentweb
y web/webs
, no devuelven objetos que representan sitios. Esto se debe a que el servicio REST cumple con los estándares de OData, y la devolución de representaciones de sitios completos haría que dichas solicitudes fueran ineficientes. En su lugar, devuelven un objeto WebInfo que contiene las propiedades escalares del sitio, pero sin los conjuntos de entidades relacionados como las colecciones o las colecciones de campos.
Para navegar a un sitio primario o secundario específico, cree la dirección URL de REST adecuada a dicho sitio mediante la propiedad Id o Title. Desde ahí, podrá acceder a los conjuntos de entidades relacionadas con el sitio.
Navegar por la estructura de carpetas
El servicio REST de SharePoint no permite recorrer la jerarquía de carpetas de un sitio a través de la construcción de la dirección URL. En su lugar, use el equivalente de REST del método Web.GetFolderByServerRelativeUrl. Por ejemplo:
Navegación no compatible con el servicio REST:
https://{site_url}/_vti_bin/client.svc/web/lists/SharedDocuments/folder1/stuff/things/Recycle
Navegación compatible con el servicio REST:
https://{site_url}/_vti_bin/client.svc/web/GetFolderByServerRelativeUrl('SharedDocuments/folder1/stuff/things')/Recycle
Propiedades del objeto SPContextWebInformation
Propiedad SPContextWebInformation | Descripción |
---|---|
webFullUrl | Obtiene la URL relativa al servidor del sitio más próximo. |
siteFullUrl | Obtiene la dirección URL relativa al servidor de la raíz de la colección de sitios que contiene el sitio. Si el sitio web más cercano es la raíz de una colección de sitios, el valor de la propiedad webFullUrl es igual al de la propiedad siteFullUrl. |
formDigestValue | Obtiene la síntesis de formulario de la solicitud del servidor. |
LibraryVersion | Obtiene la versión actual de la biblioteca REST. |
SupportedSchemaVersions | Obtiene las versiones admitidas del esquema de la biblioteca REST/CSOM. |
Objeto WebInfo
Propiedad WebInfo | Descripción |
---|---|
Created | Obtiene un valor que especifica cuándo se ha creado el sitio. |
Description | Obtiene o establece la descripción del sitio. |
Id | Obtiene un valor que especifica el identificador del sitio. |
Language | Obtiene un valor que especifica el id. de configuración regional (LCID) del idioma que se usa en el sitio. |
LastItemModifiedDate | Obtiene un valor que especifica cuándo se modificó por última vez un elemento en el sitio. |
Title | Obtiene o establece el título del sitio. |
WebTemplateId | Obtiene el identificador de la plantilla del sitio. |