Как получить ListURL из ответа «Создать библиотеку документов»? - PullRequest
0 голосов
/ 08 сентября 2018

Когда я создаю библиотеку документов в SharePoint через клиентские API REST, я получаю различные поля для идентификации библиотеки (например, Title, EntityTypeName, Id). Пример ответа при создании библиотеки с именем "Школьные материалы 2.":

{
  "d": {
    "__metadata": {
      "id": "https://somesite.sharepoint.com/sites/Team_49de5296/_api/Web/Lists(guid'd94587ec-ff65-4b61-b0e8-2a00513494ee')"
       …
    },
    …
    "DocumentTemplateUrl": "/sites/Team_49de5296/2/Forms/template.dotx",
    …
    "EntityTypeName": "2",
    "Id": "d94587ec-ff65-4b61-b0e8-2a00513494ee",
    "ParentWebUrl": "/sites/Team_49de5296",
    "Title": "Школьные материалы 2."
  }
}

Хотя, когда я захожу на портал SharePoint, URL для библиотеки - https://somesite.sharepoint.com/sites/Team_49de5296/2/Forms/AllItems.aspx. Используемая мной платформа поддерживает только listUrls, а для моей библиотеки это "/ sites / Team_49de5296 / 2". Как получить его из ответа «Создать библиотеку документов»? Должен ли я сделать отдельный запрос, чтобы получить его? Каким будет это свойство?

1 Ответ

0 голосов
/ 08 сентября 2018

Да, его нет в ответе Созданного списка.

Но вы можете получить его из отложенного свойства с именем RootFolder, в котором будет URL для выполнения этого запроса. Он не доступен по умолчанию из соображений производительности.

Таким образом, вы можете изменить приведенный ниже пример кода:

var siteUrl = _spPageContextInfo.webAbsoluteUrl;
var fullUrl = siteUrl + "/_api/web/lists";

$.ajax({
    url: fullUrl,
    type: "POST",
    data: JSON.stringify({
        '__metadata': { 'type': 'SP.List' },
        'BaseTemplate': 100,
        'Title': "Test JS List"
    }),
    headers: {
    "accept": "application/json;odata=verbose",
    "content-type": "application/json;odata=verbose",
    "X-RequestDigest": $("#__REQUESTDIGEST").val()
    },
    success: function(data){
        console.log(data);

        // get the RootFolder endpoint 
        var listRootFolderEndpoint = data.d.RootFolder["__deferred"]["uri"];        

        $.getJSON(listRootFolderEndpoint, function( rootFolderListData ) {
            // Make a GET request and then get data 
            console.log(rootFolderListData);
            var listServerRelativeUrl = rootFolderListData.ServerRelativeUrl);
        }); 

    },
    error: function(data){
        console.log(data);
    }
});?
...