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

How to get ListURL from Create Document Library response?

当我通过客户端 REST API 在 SharePoint 中创建文档库时,我得到不同的字段来标识库(如标题、实体类型名称、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”。如何从创建文档库响应中获取它?我应该做单独的查询来获取它吗? 属性 会是什么?

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

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