当我通过客户端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”。如何从创建文档库响应中获取它?我应该单独查询以获取它吗?这是什么财产?
答案 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);
}
});?