如何在一次调用中使用sharepoint REST API从多个列表中获取数据。我:想要获取数据,也想使用多个列表来搜索数据。是否可以在一次通话中执行此操作,如果"是"然后怎么样,如果" NO"那么获取数据的最佳解决方案是什么?
提前致谢..
答案 0 :(得分:1)
首先,SharePoint REST不像CSOM那样支持request batching。这使得无法在一次往返服务中进行多次REST调用。
根据Office 365 business roadmap功能的好消息:
针对SharePoint应用程序的CSOM批处理
此功能允许在SharePoint的OData中支持$ batch请求 REST服务。这允许应用程序在一个中进行多个REST调用 单程往返服务。
已处于开发状态。欢呼!感谢Office Developer Platform UserVoice,特别感谢Andrew Connell creating a feature request
另一方面,Search Query API
可用于查询多个列表,例如以下搜索查询:
contentclass:STS_ListItem AND ContentType:Task
将返回所有任务项。
以下示例演示了如何使用REST端点利用Search API:
function searchTaskItems(webUrl,success, failure) {
var url = webUrl + "/_api/search/query?querytext='contentclass:STS_ListItem AND ContentType:Task'";
$.ajax({
url: url,
method: "GET",
headers: { "Accept": "application/json; odata=verbose" },
success: function (data) {
success(data.d.query);
},
error: function (data) {
failure(data);
}
});
}
//print tasks
searchTaskItems(_spPageContextInfo.webAbsoluteUrl,
function(query){
var resultsCount = query.PrimaryQueryResult.RelevantResults.RowCount;
for(var i = 0; i < resultsCount;i++) {
var row = query.PrimaryQueryResult.RelevantResults.Table.Rows.results[i];
var taskName = row.Cells.results[3].Value;
console.log(taskName);
}
},
function(error){
console.log(JSON.stringify(error));
}
);
答案 1 :(得分:0)
不,您需要多次REST调用才能实现这一目标。 您也可以使用CSOM,以减少到服务器的往返次数。您可以加载整个查询客户端,只对服务器执行一个查询以加入所有列表。
答案 2 :(得分:0)
您可以使用REST从多个列表中检索数据。如果有任何Lookup列将链接列表之间/之间的数据,那么您所能做的就是从多个列表中检索数据。在这种情况下,您将需要使用$ expand子句。 在谷歌搜索扩展sharepoint休息电话,这可能对您有用。