SharePoint REST API - 概述

Justin-Liu發表於2017-05-01

部落格地址:http://blog.csdn.net/FoxDave

SharePoint REST API不同於傳統的Server Object Model和Client Object Model,是一種可以直接通過HTTP進行呼叫的介面。通過它可以直接訪問和操作SharePoint的一些資料。如果目前你對REST還一無所知,可以先去簡單瞭解一下。

REST服務是自SharePoint 2013開始引入的,可以遠端與SharePoint資料進行互動的介面。

本文簡單介紹一下REST服務的工作方式和簡單的使用示例。

SharePoint REST服務的工作方式

如何使用REST與SharePoint的資料進行互動呢?很簡單,你需要構建一個RESTful的HTTP請求,使用OData標準,和客戶端物件模型是對應的。

比如客戶端物件模型的List.GetByTitle(listname)方法,對應的REST終結點為:http://server/site/_api/lists/getbytitle('listname')

SharePoint中的client.svc處理HTTP請求,將響應結果以Atom或JSON的格式返回,然後你需要在你的客戶端應用程式中轉化該請求。下圖展示了SharePoint REST的高層架構圖。


由於REST的功能和易用性是客戶端物件模型提供的,它們使用.NET Framework託管程式碼、SilverLight或JavaScript保留了跟SharePoint互動的主要開發選項。

使用HTTP命令呼叫SharePoint REST服務

使用SharePoint內建的REST服務,你需要構建一個RESTful的HTTP請求,使用OData標準,與你想使用的客戶端物件模型API相對應。下表大致體現了這種對應關係。

你想做的操作需要使用的HTTP請求備註
讀取資料GET 
建立或更新資料POST使用POST來建立網站、列表或列表條目等資料。SharePoint REST服務支援傳送包含物件定義的POST命令到表示集合的終端。對於POST操作,任何非必填屬性會被設定為預設值。如果你打算設定一個只讀屬性,服務會返回一個異常。
更新或插入資料PUT使用PUT和MERGE操作來更新已存在的SharePoint物件。任何表示設定物件屬性的服務終端都可以使用PUT和MERGE來完成。對於MERGE請求,設定屬性是可選的,任何未被顯示設定的屬性將保留它們目前的屬性值;對於PUT請求,如果你不在更新物件時指定所有必填屬性,REST服務會返回一個異常。而且,對於未指定的非必填屬性將會被設定為預設值。
刪除資料DELETE使用HTTP的DELETE命令來刪除終結點表示的SharePoint物件。在可被回收站回收的情況下,比如列表、檔案和列表專案,會執行刪除到回收站操作。
構造REST的URL來訪問SharePoint資料

REST請求的URL基本上是跟客戶端物件模型對應的,比如網站集和網站的終結點如下:

http://server/site/_api/site

http://server/site/_api/web

上面URL中的server表示伺服器的名稱,site/web表示特定網站集/網站的名稱或路徑。

因此,建議大家參照客戶端物件模型來理解REST服務請求URL的格式,每一級物件用/來分隔。

擴充套件閱讀連結:

Social feed REST:https://msdn.microsoft.com/library/f1cb914f-1e91-4e23-bf53-d2ab323eac13%28Office.15%29.aspx?f=255&MSPPError=-2147217396

Following people and content REST:https://msdn.microsoft.com/library/c05755df-846d-4a39-941d-950d066cc6d4(Office.15).aspx

Determine SharePoint REST service endpoint URIs:https://dev.office.com/sharepoint/docs/apis/rest/determine-sharepoint-rest-service-endpoint-uris

當然,之後的文章也會進行更深入細緻的講解每個API介面。

SharePoint REST斷點示例

下面的內容主要講述典型的REST端點URL示例,以使你更快速地瞭解如何跟SharePoint資料互動。REST請求URL的字首都是http://server/site/_api/,這個可以記錄一下,然後對於每類操作可以參照下表跟這個字首連在一起構成一個完整的REST請求URL。對於POST等更新命令,需要在請求中提供body來說明資料。

描述URL端點HTTP方法請求體(Body)內容
獲取網站的標題web/titleGET 
獲取網站中所有的列表listsGET 
獲取單一列表的後設資料lists/getbytitle('listname')GET 
獲取一個列表的專案集合lists/getbytitle('listname')/itemsGET 
獲取文件的指定屬性(獲取文件標題)lists/getbytitle('listname')?select=TitleGET 
建立一個列表:

lists POST

{
  '_metadata':{'type':SP.List},
  'AllowContentTypes': true,
  'BaseTemplate': 104 ,
  'ContentTypesEnabled': true,
  'Description': 'My list description ',
  'Title': 'RestTest '
}
向列表中新增一個專案:
lists/getbytitle('listname')/items POST

{
  '_metadata':{'type':SP.listname ListItem},
  'Title': 'MyItem'
}
批量Job支援

SharePoint Online和SharePoint 2016的REST服務支援使用OData的 $batch

 查詢選項來將多個請求整合到對服務的單次呼叫,更多資訊可以參照這裡

MSDN地址:https://dev.office.com/sharepoint/docs/apis/rest/get-to-know-the-sharepoint-rest-service,訪問原地址有更多的學習資源可以瞭解。

相關文章