在 SharePoint 插件中使用 SharePoint REST API






4.33/5 (2投票s)
一个使用 REST API 和跨域库的简单 SharePoint 插件示例。
引言
最近我开始探索在 SharePoint Add-In(以前称为 SharePoint Apps)中使用 SharePoint REST API 框架。微软提供了一些不错的文档页面,但找到一个简单的实用示例却颇具挑战。我想要的是一个完整的项目,其中包含逐步说明,说明如何使用 SharePoint 2013 中的跨域库从您的 Add-In 访问 SharePoint 网站中的数据。
背景
如前所述,本文和示例使用了 MSDN 中找到的信息
使用跨域库从 Add-In 访问 SharePoint 2013 数据
使用 SharePoint 2013 REST 端点完成基本操作
注意: 对于我的示例,我使用了 Visual Studio 2015 和一个包含名为 Movies 的列表的 SharePoint 365 站点。
重要提示: 该站点已启用 旁加载功能。
项目设置
您可以下载我的项目,但在构建您自己的项目时,您需要以下步骤进行初始设置
步骤 1: 在 Visual Studio 新建项目窗口中,选择 App for SharePoint
对于我的示例,我将项目命名为 spRestExample
步骤 2: 输入您的 SharePoint 站点的地址。选择 SharePoint-Hosted 作为您希望托管应用程序的方式。
步骤 3: 指定目标 SharePoint 版本
您将得到像这样一组解决方案文件(在 VS 2015 中)
此时,点击运行会打开我们的站点,并显示我的用户名(App.js 文件中的 javascript 结果)
步骤 4: 双击 AppManifest.xml 文件,并像这样设置 SharePoint 权限
添加代码
双击 App.js 文件,并删除其中的所有内容。
用这段代码替换它
<formatted>
'use strict'; $(document).ready(function () { var hostweburl; var appweburl; //The SharePoint site where the App is installed hostweburl = decodeURIComponent(getQueryStringParameter('SPHostUrl')); //The location within the site where the App will be deployed appweburl = decodeURIComponent(getQueryStringParameter('SPAppWebUrl')); // resources are in URLs in the form: web_url/_layouts/15/resource var scriptbase = hostweburl + "/_layouts/15/"; $.getScript(scriptbase + "SP.RequestExecutor.js", execCrossDomainRequest); // Use cross-domain library to interact with more than one domain //in your remote add-in page through a proxy function execCrossDomainRequest() { var executor = new SP.RequestExecutor(appweburl); } $("#showButton").click(function () { var executor = new SP.RequestExecutor(appweburl); executor.executeAsync( { url: appweburl + "/_api/SP.AppContextSite(@target)/web/lists/getbytitle('Movies')/Items?@target='" + hostweburl + "'", method: "GET", headers: { "Accept": "application/json; odata=verbose" }, success: successHandler, error: errorHandler } ); }); }); function successHandler(data) { var jsonObject = JSON.parse(data.body); var moviesHTML = ""; var results = jsonObject.d.results; for (var i = 0; i < results.length; i++) { moviesHTML = moviesHTML + "<p><h3>" + results[i].Title + "</p><hr>"; } document.getElementById("resultsDiv").innerHTML = moviesHTML; } function errorHandler(error) { $("#resultsDiv").append(error.statusText) } //function to get a parameter value by a specific key function getQueryStringParameter(urlParameterKey) { var params = document.URL.split('?')[1].split('&'); var strParams = ''; for (var i = 0; i < params.length; i = i + 1) { var singleParam = params[i].split('='); if (singleParam[0] == urlParameterKey) return decodeURIComponent(singleParam[1]); } }
</formatted>
在 Default.aspx 文件中,在 <asp:Content> 标签之间添加此代码
<div> <input id="showButton" type="button" value="Show Movies2" /> </div> <div id="resultsDiv"> </div>
现在您可以准备运行该项目了。第一次运行此项目时,系统将提示您信任此新应用程序。选择您的列表名称(在本例中为 Movies),然后单击 信任它
您将看到您的页面,其中包含新的 显示电影 按钮。
点击按钮现在将显示所有电影标题
在您的站点中使用该项目
如果您想在您自己的 SharePoint 站点上运行我的项目,您需要更改站点 URL。您可以在“属性”窗口打开的情况下选择项目来找到此属性