SharePoint - REST API
在本章中,我们将介绍 REST API。 这不是传统的 API,在传统的 API 中,我们有一组包含类型的库,而这些类型包含属性和方法。
REST API 实现为基于开放数据协议或 OData 的以数据为中心的 Web 服务。 这些 Web 服务的工作方式是通过传递到服务器的特定 URL 来使用系统中的每个资源。
让我们在打开 SharePoint 网站的 Internet Explorer 中查看这一点。
步骤 1 − 如果您使用的是 Internet Explorer,请转到 Internet Explorer 设置,然后在"内容"选项卡上选择"源"和"网页快讯"的设置,如下面的屏幕截图所示。
![Internet 选项](/sharepoint/images/internet_options.jpg)
您将看到以下对话框。 确保提要阅读视图已关闭,然后单击"确定"。
步骤 2 − 现在让我们将 URL 更改为站点 URL +/_api/web 并按 Enter 键。
![摘要和网页快讯设置](/sharepoint/images/feed_and_web_slice_settings.jpg)
现在您应该看到类似于以下屏幕截图的视图。
我们需要有关当前网站或当前网站的信息。 因此,站点 URL +/_api 是 SharePoint 2013 REST API 的基本 URL,而 web 是我们的查询。 我们需要有关当前网络的信息。
我们得到一个 XML 文档,如果向下滚动,我们将得到有关当前网络的信息。
![XML 文档](/sharepoint/images/xml_document.jpg)
接下来,如果您想了解网络中的列表,可以将列表附加到您的 URL。 我们将获得有关当前站点中所有列表的信息集合,而不是有关单个对象的信息。
![网络中的列表](/sharepoint/images/lists_in_web.jpg)
当我们使用浏览器时,我们向服务器发出 get 请求,这意味着我们想要检索信息。 但是,我们也可以执行其余的标准 CRUD 操作。
![CRUD 操作](/sharepoint/images/crud_operations.jpg)
使用 REST API 检索资源
SharePoint 2013 REST API 不公开元数据。 因此,当我们在托管代码中使用它时,我们无法使用 Visual Studio 使用服务引用对话框生成服务代理。 相反,我们可以使用像 http Web 请求对象的 Web 客户端这样的类型来向服务器发送请求,然后只获取原始结果。
这些结果是否以 XML 或 JSON 形式返回取决于我们随请求发送的接受标头。
如果我们返回 XML,则可以使用 LINQ to XML 从应用程序所需的响应中检索信息。
如果我们返回 JSON,那么我们可以使用各种 JSON 序列化之一将 JSON 解析为 .NET 对象,然后使用它来检索我们需要的信息。
在 JavaScript 中使用 REST API 时,我们可以使用 jQuery 或 SP.RequestExecutor 对象来调用服务。 正如在托管代码示例中一样,我们可以使用接受标头控制是返回 XML 还是 JSON。 由于我们大部分时间都在 JavaScript 中工作,因此我们希望返回 JSON。
另一件需要注意的事情是当您构建服务的 URL 时,我们可以使用 _spPageContextInfo 对象从站点获取绝对 URL,然后只需将服务 URL 和查询附加到它即可。 这是因为 REST API 服务不公开元数据,并且您无法在 Visual Studio 中创建服务引用,在托管代码中使用 REST API 确实是不可能的。
让我们看看如何通过创建一个新项目从 JavaScript 调用 REST API。
步骤 1 − 在中间窗格中选择SharePoint 应用程序,然后输入项目的名称。 单击确定。
![应用程序 SharePoint](/sharepoint/images/app_sharepoint.jpg)
步骤 2 − 输入您的站点 URL 并选择 SharePoint – 托管 选项,然后单击"下一步"。 单击"完成"。
![SharePoint 托管](/sharepoint/images/sharepoint_hosted.jpg)
步骤 3 − 创建项目后,让我们打开 Default.aspx 页面(位于解决方案资源管理器中的页面下)并添加一个按钮。
这是 Default.aspx 文件的完整实现。
<%-- The following 4 lines are ASP.NET directives needed when using SharePoint components --%> <%@ Page Inherits = ”Microsoft.SharePoint.WebPartPages.WebPartPage, Microsoft.SharePoint, Version = 15.0.0.0, Culture = neutral, PublicKeyToken = 71e9bce111e9429c” MasterPageFile = ”~masterurl/default.master” Language = ”C#” %> <%@ Register TagPrefix = ”Utilities” Namespace = ”Microsoft.SharePoint.Utilities” Assembly = ”Microsoft.SharePoint, Version = 15.0.0.0, Culture = neutral, PublicKeyToken = 71e9bce111e9429c” %> <%@ Register TagPrefix = ”WebPartPages” Namespace = ”Microsoft.SharePoint.WebPartPages” Assembly = ”Microsoft.SharePoint, Version = 15.0.0.0, Culture = neutral, PublicKeyToken = 71e9bce111e9429c” %> <%@ Register TagPrefix = ”SharePoint” Namespace = ”Microsoft.SharePoint.WebControls” Assembly = ”Microsoft.SharePoint, Version = 15.0.0.0, Culture = neutral, PublicKeyToken = 71e9bce111e9429c” %> <%-- The markup and script in the following Content element will be placed in the <head> of the page --%> <asp:Content ContentPlaceHolderID = ”PlaceHolderAdditionalPageHead” runat = ”server”> <script type = ”text/javascript” src = ”../Scripts/jquery-1.9.1.min.js”></script> <SharePoint:ScriptLink name = ”sp.js” runat = ”server” OnDemand = ”true” LoadAfterUI = ”true” Localizable = ”false” /> <meta name = ”WebPartPageExpansion” content = ”full” /> <!–Add your CSS styles to the following file -> <link rel = ”Stylesheet” type = ”text/css” href = ”../Content/App.css” /> <!–Add your JavaScript to the following file -> <script type = ”text/javascript” src = ”../Scripts/App.js”></script> </asp:Content> <%-- The markup in the following Content element will be placed in the TitleArea of the page --%> <asp:Content ContentPlaceHolderID = ”PlaceHolderPageTitleInTitleArea” runat = ”server”> Page Title </asp:Content> <%-- The markup and script in the following Content element will be placed in the <body> of the page --%> <asp:Content ContentPlaceHolderID = ”PlaceHolderMain” runat = ”server”> <div> <p id = ”message”> <!–The following content will be replaced with the user name when you run the app – see App.js -> initializing… </p> <input id = ”loadButton” type = ”button” value = ”Load” /> </div> </asp:Content>
步骤 4 − 打开解决方案资源管理器中"Script"下的 App.js 文件,并将其替换为以下代码。
JQuery(document).ready(function () { JQuery("#loadButton").click(usingLoad) }); function usingLoad() { var context = SP.ClientContext.get_current(); var web = context.get_web(); context.load(web); context.executeQueryAsync(success, fail); function success() { var message = jQuery("#message"); message.text(web.get_title()); message.append("<br/>"); message.append(lists.get_count()); } function fail(sender, args) { alert("Call failed. Error: " + args.get_message()); } }
我们使用 jQuery 创建 document.ready 函数。 在这里,我们只想将单击事件处理程序附加到按钮。 因此,我们使用选择器来获取 loadButton,然后使用 Load 添加点击事件处理程序。
因此,当我们单击按钮时,我们想要执行与演示的托管版本中相同的操作,我们想要显示网站的标题。
步骤 5 − 发布您的应用程序,您将看到以下文件 −
![发布申请](/sharepoint/images/publish_application.jpg)
步骤 6 − 将此文件拖到您的 SharePoint 网站应用程序页面。
![网站应用程序页面](/sharepoint/images/site_apps_page.jpg)
您将在列表中看到文件 JavaScriptDemo。
![JavaScriptDemo](/sharepoint/images/javascriptdemo.jpg)
步骤 7 − 单击左侧窗格中的站点内容,然后选择添加应用程序。 单击 JavaScriptDemo 图标。
![JavaScriptDemo 图标](/sharepoint/images/javascriptdemo_icon.jpg)
步骤 8 − 点击信任。
![相信它](/sharepoint/images/trust_it.jpg)
步骤 9 − 现在您将看到您的应用程序。 单击应用程序图标。
![单击应用程序图标](/sharepoint/images/click_app_icon.jpg)
步骤 10 − 当您单击"加载"按钮时,它将更新文本。
![单击加载按钮](/sharepoint/images/click_load_button.jpg)
您可以看到更新后的文本。
![更新文本](/sharepoint/images/updated_text.jpg)