【问题标题】:Fetch data from multiple list sharepoint REST API in one Ajax call在一次 Ajax 调用中从多个列表共享点 REST API 获取数据
【发布时间】:2017-08-07 23:59:04
【问题描述】:

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

提前谢谢..

【问题讨论】:

    标签: sharepoint postman


    【解决方案1】:

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

    好消息,根据Office 365 business roadmap的特点:

    用于 SharePoint 应用的 CSOM 批处理

    此功能允许在 SharePoint 的 OData 中支持 $batch 请求 休息服务。这允许应用程序在一个 单次往返服务。

    已经处于开发状态。欢呼!感谢Office Developer Platform UserVoice ,特别感谢 Andrew Connell 的creating a feature request


    另一方面,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));
      }
    );
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-10-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多