【问题标题】:How to get ListURL from Create Document Library response?如何从创建文档库响应中获取 ListURL?
【发布时间】:2018-09-08 16:47:26
【问题描述】:

当我通过客户端 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”。如何从创建文档库响应中获取它?我应该做单独的查询来得到它吗?它会是什么属性?

【问题讨论】:

    标签: sharepoint sharepoint-online


    【解决方案1】:

    是的,它在 Created 列表响应中不可用。

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

    【讨论】:

    • 顺便问一下,使用“odata=verbose”并设置请求摘要标头有什么具体原因吗?
    • 找到了 odata=verbose (microsoft.com/en-us/microsoft-365/blog/2014/08/13/…) 的答案。似乎我只需要根据我需要的响应字段来选择是否应该设置它。
    猜你喜欢
    • 1970-01-01
    • 2020-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-10
    • 2015-12-01
    • 1970-01-01
    相关资源
    最近更新 更多