在 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 外接程序 的步骤
- 打开 Visual Studio 2012 或更高版本。
- 创建"SharePoint 相关应用程序"项目。
- 指定应用程序设置,包括应用程序名称、调试应用程序的网站 URL,以及您希望的应用程序承载方式(自动承载、供应商承载、SharePoint 承载)。 有关托管选项的详细信息,请参阅 选择用于开发和托管 SharePoint 外接程序的模式。
- 选择"完成"以创建应用程序。
生成外部内容类型
在“解决方案资源管理器”中,打开项目的快捷菜单,再依次选择“添加”和“外部数据源的内容类型”。
在“指定 OData 源”页上,输入要连接到的 OData 服务 URL。 在此示例中,使用 https://www.odata.org/ecosystem 上发布的 Northwind OData 源。 将 OData 服务的 URL 设置为
http://services.odata.org/Northwind/Northwind.svc/
,并为数据源提供名称。选择“下一步”。
这将显示 OData 服务公开的数据实体的列表。 选择"客户"实体。 确保选中了"为所选数据实体创建列表实例(服务操作除外)"复选框。
选择"完成"。
代码示例:将脚本和 HTML 添加到 Home.aspx 页面中
此时,拥有外部内容类型和外部列表,可显示 Northwind OData 源中的数据。
下一个目标是修改您在创建应用程序时创建的 default.aspx 页面。 您将添加一个容器来保存在该页面加载时执行的查询的结果。 通过在发生页面加载事件时执行脚本,您确保在每次浏览该页面时执行脚本,并且生成的 REST 调用对罗斯文 OData 源执行以将记录添加到该页面中。
向 Default.aspx 页面中添加容器
- 在"解决方案资源管理器"中,打开"页面"模块中的 Default.aspx 页面。
- 将以下 div 元素添加到该页面中。
<div id="displayDiv"></div>
- 保存该页面。
最后,将在该页面加载时执行的代码添加到 App.js 文件中。
修改 App.js 文件以进行 REST 调用
- 在 SharePoint 项目的脚本模块中打开 App.js 文件。
- 将以下代码粘贴到该文件末尾。
$(document).ready(function () {
// Namespace
window.AppLevelECT = window.AppLevelECT || {};
// Constructor
AppLevelECT.Grid = function (hostElement, surlWeb) {
this.hostElement = hostElement;
if (surlWeb.length > 0 && 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 页面,页面上会出现客户列表。