-1

我们如何通过一次调用使用 sharepoint REST API 从多个列表中获取数据。我:想获取数据,也想使用多个列表来搜索数据。如果“是”,是否可以在一次通话中做到这一点,那么如何以及如果“否”,那么获取数据的最佳解决方案是什么?

提前致谢..

4

3 回答 3

1

首先,SharePoint REST不像 CSOM 那样支持请求批处理。这使得不可能在一次往返服务中进行多次 REST 调用。

好消息是,根据Office 365 商业路线图该功能:

适用于 SharePoint 的应用程序的 CSOM 批处理

此功能允许在 SharePoint 的 OData REST 服务中支持 $batch 请求。这允许应用程序在一次往返服务中进行多个 REST 调用。

已经处于开发状态。欢呼!感谢Office 开发人员平台 UserVoice,特别感谢 Andrew Connell创建功能请求


另一方面,Search Query API可用于查询多个列表,例如以下搜索查询:

contentclass:STS_ListItem AND ContentType:Task

将返回所有任务项。

JavaScript 示例

以下示例演示了如何使用 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));
  }
);
于 2014-09-04T17:53:18.900 回答
0

不,您将需要多次 REST 调用来实现这一点。您也可以使用 CSOM 来减少到服务器的往返次数。您可以加载整个查询客户端,并且只对服务器执行一个查询以加入所有列表。

于 2014-09-04T00:19:37.137 回答
0

您可以使用 REST 从多个列表中检索数据。如果有任何查找列将链接列表之间/之间的数据,您所能做的就是从多个列表中检索数据。在这种情况下,您将需要使用 $expand 子句。在 google 中搜索expand sharepoint Rest call,这可能对您有用。

于 2017-08-07T15:59:04.937 回答