在 SharePoint 中使用 REST 访问外部数据

了解如何通过使用 Business Connectivity Services (BCS) 的代表性状态传输 (REST) URL 来访问来自 SharePoint 的外部数据。 本文演示如何设置从开放式数据协议 (OData) 源检索数据的外部列表。

使用 REST 访问外部数据的先决条件

若要通过使用 REST 访问来自 SharePoint 的外部数据,您需要:

  • SharePoint
  • Visual Studio 2012
  • Visual Studio 2012 Office 开发人员工具
  • 正常运行的 SharePoint 外接程序开发环境:按照 为 SharePoint 设置常规开发环境中的说明进行操作。
  • 对公共 OData.org 创建器的访问权

在使用 REST 访问外部数据时要了解的核心概念

SharePoint REST 服务提供了使用专门构建的 URL 访问外部数据的方法。 若要了解它的工作原理和使用方法,请参阅以下文章。

表 1. SharePoint 中 REST 的核心概念

文章标题 说明
使用 SharePoint REST 服务进行编程 了解如何使用 SharePoint REST 服务,它提供了可与现有客户端对象模型比较的 REST 编程接口。
开始使用 SharePoint REST 服务 基本了解如何通过 REST 和 OData Web 协议标准,使用 SharePoint REST 服务访问和更新 SharePoint 数据。
使用 SharePoint REST 终结点完成基本操作 了解如何按照 SharePoint 数据结构在 REST 服务中的表示进行导航、通过 REST 服务对 SharePoint 项执行常见的 CRUD(创建、读取、更新和删除)操作、跨应用程序同步 SharePoint 项以及控制项并发性。

创建 SharePoint 外接程序以使用 REST 访问外部数据

下面的过程指导您设置 SharePoint 外接程序并配置网页以使用 REST 功能请求从外部数据源检索数据。

创建 SharePoint 外接程序 的步骤

  1. 打开 Visual Studio 2012 或更高版本。
  2. 创建"SharePoint 相关应用程序"项目。
  3. 指定应用程序设置,包括应用程序名称、调试应用程序的网站 URL,以及您希望的应用程序承载方式(自动承载、供应商承载、SharePoint 承载)。 有关托管选项的详细信息,请参阅 选择用于开发和托管 SharePoint 外接程序的模式
  4. 选择"完成"以创建应用程序。

生成外部内容类型

  1. 在“解决方案资源管理器”中,打开项目的快捷菜单,再依次选择“添加”和“外部数据源的内容类型”

  2. 在“指定 OData 源”页上,输入要连接到的 OData 服务 URL。 在此示例中,使用 https://www.odata.org/ecosystem 上发布的 Northwind OData 源。 将 OData 服务的 URL 设置为 http://services.odata.org/Northwind/Northwind.svc/,并为数据源提供名称。

    选择“下一步”

  3. 这将显示 OData 服务公开的数据实体的列表。 选择"客户"实体。 确保选中了"为所选数据实体创建列表实例(服务操作除外)"复选框。

  4. 选择"完成"。

代码示例:将脚本和 HTML 添加到 Home.aspx 页面中

此时,拥有外部内容类型和外部列表,可显示 Northwind OData 源中的数据。

下一个目标是修改您在创建应用程序时创建的 default.aspx 页面。 您将添加一个容器来保存在该页面加载时执行的查询的结果。 通过在发生页面加载事件时执行脚本,您确保在每次浏览该页面时执行脚本,并且生成的 REST 调用对罗斯文 OData 源执行以将记录添加到该页面中。

向 Default.aspx 页面中添加容器

  1. 在"解决方案资源管理器"中,打开"页面"模块中的 Default.aspx 页面。
  2. 将以下 div 元素添加到该页面中。
<div id="displayDiv"></div>
  1. 保存该页面。

最后,将在该页面加载时执行的代码添加到 App.js 文件中。

修改 App.js 文件以进行 REST 调用

  1. 在 SharePoint 项目的脚本模块中打开 App.js 文件。
  2. 将以下代码粘贴到该文件末尾。
$(document).ready(function () {

  // Namespace
  window.AppLevelECT = window.AppLevelECT || {};

  // Constructor
  AppLevelECT.Grid = function (hostElement, surlWeb) {
      this.hostElement = hostElement;
      if (surlWeb.length > 0 &amp;&amp; surlWeb.substring(surlWeb.length - 1, surlWeb.length) != "/")
          surlWeb += "/";
      this.surlWeb = surlWeb;
  }

  // Prototype
  AppLevelECT.Grid.prototype = {

      init: function () {

          $.ajax({
              url: this.surlWeb + "_api/lists/getbytitle('Customer')/items?$select=BdcIdentity,CustomerID,ContactName",
              headers: {
                  "accept": "application/json",
                  "X-RequestDigest": $("#__REQUESTDIGEST").val()
              },
              success: this.showItems
          });
      },

      showItems: function (data) {
          var items = [];

          items.push("<table>");
          items.push('<tr><td>Customer ID</td><td>Customer Name</td></tr>');

          $.each(data.d.results, function (key, val) {
              items.push('<tr id="' + val.BdcIdentity + '"><td>' +
                  val.CustomerID + '</td><td>' +
                  val.ContactName + '</td></tr>');
          });

          items.push("</table>");

          $("#displayDiv").html(items.join(''));
      }
  }

  ExecuteOrDelayUntilScriptLoaded(getCustomers, "sp.js");
});

function getCustomers() {
    var grid = new AppLevelECT.Grid($("#displayDiv"), _spPageContextInfo.webServerRelativeUrl);
    grid.init();
}

按 F5 将应用程序部署到 SharePoint。 浏览到应用程序中的 Default.aspx 页面,页面上会出现客户列表。

另请参阅