- SharePoint 教程
- SharePoint - 首頁
- SharePoint - 概述
- SharePoint - 型別
- SharePoint - 功能
- SharePoint - 設定環境
- SharePoint - 建立網站集
- SharePoint - API
- SharePoint - 中心管理
- SharePoint - 應用模型
- SharePoint - 整合選項
- SharePoint - 開發工具
- SharePoint - 列表功能
- 其他列表功能
- SharePoint - 自定義列表
- SharePoint - 庫
- SharePoint - Web 部件
- 網站列和內容型別
- SharePoint - 資料
- SharePoint - 伺服器物件模型
- SharePoint - 客戶端物件模型
- SharePoint - REST API
- SharePoint - 功能和元素
- SharePoint - 功能/事件接收器
- SharePoint - Azure 平臺
- SharePoint - 打包和部署
- SharePoint - 沙盒解決方案
- SharePoint - 應用
- SharePoint 有用資源
- SharePoint - 快速指南
- SharePoint - 資源
- SharePoint - 討論
SharePoint - REST API
在本章中,我們將介紹 REST API。這並不是傳統的 API,我們沒有一組包含型別和屬性以及方法的庫。
REST API 是作為基於開放資料協議或 OData 的資料中心 Web 服務實現的。這些 Web 服務的工作方式是,使用系統中的每個資源都可以透過您傳遞到伺服器的特定 URL 來定址。
讓我們在開啟 SharePoint 站點的 Internet Explorer 中檢視這一點。
步驟 1 - 如果您使用的是 Internet Explorer,請轉到 Internet Explorer 設定,並在“內容”選項卡上,選擇“Feed 和 Web 切片”的設定,如下面的螢幕截圖所示。
您將看到以下對話方塊。確保Feed 閱讀檢視為關閉,然後單擊“確定”。
步驟 2 - 現在讓我們將 URL 更改為站點 URL +/_api/web 並按 Enter。
現在您應該會看到如下面的螢幕截圖所示的檢視。
我們想要有關當前 Web 或當前站點的資訊。因此,站點 URL +/_api 是 SharePoint 2013 REST API 的基本 URL,而 web 是我們的查詢。我們想要有關當前 Web 的資訊。
我們獲得了 XML 文件,如果我們向下滾動,我們將獲得有關當前 Web 的資訊。
接下來,如果您想知道 Web 中的列表,您可以將列表追加到您的 URL。我們不會獲取有關單個物件的資訊,而是將獲得有關當前站點中所有列表的資訊集合。
當我們使用瀏覽器時,我們向伺服器發出 get 請求,這意味著我們想要檢索資訊。但是,我們也可以執行其他標準的 CRUD 操作。
使用 REST API 檢索資源
SharePoint 2013 REST API 不會公開元資料。因此,當我們在託管程式碼中使用它時,我們無法使用 Visual Studio 透過服務引用對話方塊生成服務代理。相反,我們可以使用像 http web 請求物件的 web 客戶端這樣的型別向伺服器傳送請求,並僅獲取原始結果。
這些結果是作為 XML 還是 JSON 返回取決於我們與請求一起傳送的 accept 標頭。
如果我們獲得 XML,那麼我們可以使用 LINQ to XML 從響應中檢索我們應用程式所需的資訊。
如果我們獲得 JSON,那麼我們可以使用各種 JSON 序列化器之一將 JSON 解析為 .NET 物件,然後使用它來檢索我們所需的資訊。
在 JavaScript 中使用 REST API 時,我們可以使用 jQuery 或 SP.RequestExecutor 物件來呼叫服務。就像在託管程式碼示例中一樣,我們可以使用 accept 標頭來控制是否獲取 XML 或 JSON。由於我們大多數情況下都在 JavaScript 中工作,因此我們將希望獲取 JSON。
需要注意的另一件事是,當您構建服務的 URL 時,我們可以使用_spPageContextInfo物件從站點獲取絕對 URL,然後只將服務 URL 加上查詢追加到它。這是因為 REST API 服務不會公開元資料,並且您無法在 Visual Studio 中建立服務引用,使用託管程式碼中的 REST API 實際上是一個無法啟動的操作。
讓我們看看如何透過建立一個新專案從 JavaScript 呼叫 REST API。
步驟 1 - 在中間窗格中選擇SharePoint 應用,並輸入專案的名稱。單擊確定。
步驟 2 - 輸入您的站點 URL,選擇SharePoint 託管選項,然後單擊“下一步”。單擊“完成”。
步驟 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 - 開啟 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函式。在這裡,我們只想將 click 事件處理程式附加到按鈕。因此,我們使用了選擇器來獲取loadButton,然後我們使用Load添加了 click 事件處理程式。
因此,當我們單擊按鈕時,我們想要執行與託管版本演示中相同的操作,我們想要顯示 Web 的標題。
步驟 5 - 釋出您的應用程式,您將看到以下檔案 -
步驟 6 - 將此檔案拖到您的 SharePoint 站點應用頁面。
您將在列表中看到檔案JavaScriptDemo。
步驟 7 - 單擊左側窗格中的“網站內容”,然後選擇新增應用。單擊JavaScriptDemo圖示。
步驟 8 - 單擊信任它。
步驟 9 - 現在您將看到您的應用。單擊應用圖示。
步驟 10 - 當您單擊“載入”按鈕時,它將更新文字。
您可以看到更新後的文字。