Навигация по структуре данных SharePoint, представленной в службе REST
При работе со службой REST SharePoint часто возникает ситуация, когда вам известен URL-адрес определенного элемента SharePoint, но требуется получить доступ к связанным элементам, например структуре папок и библиотек, в которой находится элемент. Допустим, вы создаете надстройку, в которой пользователь вводит URL-адрес документа в библиотеке SharePoint. После этого надстройка должна разобрать этот URL-адрес и определить фактический URL-адрес сайта SharePoint. После этого надстройка сможет отправлять с сайта дальнейшие запросы от имени пользователя, например на создание, обновление или удаление связанных элементов или ресурсов.
Для этого надстройка должна запросить у SharePoint следующие сведения:
- Относительные URL-адреса сайта и семейства веб-сайтов, содержащих ресурс.
- Дайджест формы, позволяющий выполнять запросы, меняющие состояние ресурса, например POST, PUT, MERGE и DELETE.
Простой процесс:
Используйте оператор
/contextinfo
с заданным URL-адресом для доступа к сайту и семейству веб-сайтов, а также дайджестом формы. Используйте оператор/contextinfo
в следующем формате:POST https://{site_url}/_api/contextinfo Authorization: "Bearer " + accessToken Accept: "application/json;odata=verbose"
Чтобы усилить защиту от межсайтовых сценариев, оператор
/contextinfo
принимает только запросы POST.Используйте свойства объекта SPContextWebInformation, возвращаемые оператором
/contextinfo
, для доступа к дополнительным ресурсам по мере необходимости.
Попробуйте
Начните с URL-адреса определенного элемента SharePoint. Например: https://{site_url}/doclib/myDocument.docx
Удалите имя ресурса в конце URL-адреса так, чтобы URL-адрес указывал на библиотеку документа, папку или список. В этом случае: https://{site_url}/doclib/
Добавьте указатель службы REST и оператор
/contextinfo
к URL-адресу:POST https://{site_url}/_api/doclib/contextinfo Authorization: "Bearer " + accessToken Accept: "application/json;odata=verbose"
Прочитайте дайджест формы и свойства webFullUrl из отклика.
Добавьте указатель службы REST
_api
в конец URL-адреса веб-сайта.Используйте полученный URL-адрес и дайджест формы для отправки запросов о других нужных ресурсах.
Совет
При отправке запросов GET или отправке запросов с использованием проверенного маркера OAuth передавать дайджест формы не требуется.
Навигация по родительским и дочерним сайтам
При навигации по структуре сайтов с помощью серверной объектной модели SharePoint используются свойства SPWeb.ParentWeb и SPWeb.Webs для доступа к объектам, представляющим родительские и дочерние сайты.
Соответствующие ресурсы REST (web/parentweb
и web/webs
) не возвращают объекты, представляющие сайты. Это вызвано тем, что служба REST соответствует стандартам OData, а возврат готовых представлений сайтов сделал бы такие запросы неэффективными. Вместо этого они возвращают объект WebInfo, содержащий скалярные свойства сайта, но без связанных наборов сущностей, таких как коллекции или семейства полей.
Чтобы перейти к определенному родительскому или дочернему сайту, составьте подходящий URL-адрес REST этого сайта с помощью свойства Id или Title. После этого вы можете получить доступ к наборам сущностей, связанным с этим сайтом.
Навигация по структуре папок
Служба REST SharePoint не поддерживает обход иерархии папок сайта путем составления URL-адресов. Вместо этого можно использовать аналог метода Web.GetFolderByServerRelativeUrl в службе REST. Пример:
Навигация, не поддерживаемая в службе REST:
https://{site_url}/_vti_bin/client.svc/web/lists/SharedDocuments/folder1/stuff/things/Recycle
Навигация, поддерживаемая в службе REST:
https://{site_url}/_vti_bin/client.svc/web/GetFolderByServerRelativeUrl('SharedDocuments/folder1/stuff/things')/Recycle
Свойства объекта SPContextWebInformation
Свойство SPContextWebInformation | Описание |
---|---|
webFullUrl | Возвращает URL-адрес относительно сервера для ближайшего сайта. |
siteFullUrl | Получает относительный URL-адрес корневого веб-сайта семейства, в котором содержится сайт. Если ближайшим веб-сайтом является корневой сайт семейства веб-сайтов, значения свойств webFullUrl и siteFullUrl одинаковы. |
formDigestValue | Возвращает дайджест формы запроса сервера. |
LibraryVersion | Возвращает текущую версию библиотеки REST. |
SupportedSchemaVersions | Получает поддерживаемые версии схемы библиотеки REST/CSOM. |
Объект WebInfo
Свойство WebInfo | Описание |
---|---|
Created | Возвращает значение, определяющее, когда был создан сайт. |
Description | Возвращает или задает описание сайта. |
Id | Возвращает значение, указывающее идентификатор сайта. |
Language | Возвращает значение, указывающее код языка, используемого на сайте. |
LastItemModifiedDate | Возвращает значение, определяющее, когда в последний раз был изменен элемент на сайте. |
Title | Получает или задает название сайта. |
WebTemplateId | Получает идентификатор шаблона сайта. |