博客地址: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的高层架构图。

SharePoint REST API – 概述-DESTLIVE

由于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,访问原地址有更多的学习资源可以了解。