如何从“创建文档库”响应中获取ListURL?

时间:2018-09-08 00:52:41

标签: sharepoint sharepoint-online

当我通过客户端REST API在SharePoint中创建文档库时,我会获得不同的字段来标识库(例如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 :(得分:1)

是的,它在“创建的列表”响应中不可用。

但是您可以从名为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);
    }
});?