Windows 商店应用中应用 SharePoint REST API

前方一篇大家介绍了 Office 365 REST API
的法定工具的行使,本篇大家来看一下 SharePoint REST API
本人的描述、结构和接纳方法,以及部分应用经验。

先是来看看SharePoint REST API 的概述:

      REST API 服务是在 SharePoint 二〇一二 中被引入的,官方认为 REST API
服务能够匹敌于现有的 SharePoint 客户端对象模型。开发人士可以应用其余协理REST Web 请求的技巧(C#,javascript,java,oc 等等)以长途格局与
SharePoint 数据实行互动。那也就象征,开发职员能够应用 REST
Web技术和标准开放数据协议(OData)语法从其 SharePoint
相关应用程序、化解方案和客户端应用程序执行 CRUD 操作。而针对性中长途 Web
或移动使用,必须先取得访问权限,才能运用 SharePoint 数据财富。

     在 REST API 出现从前,我们须要经过 client.svc 那个 WCF 服务来呼吁
SharePoint
的列表数据,而且仅限于获取数据。数据的修改并从未在这么些服务中反映。而由此REST API,我们可以完结后面提到的 CRUD 操作:使用OData 标准组织可完成REST 的 HTTP
请求,对应到相应的伸手方法,就足以对该财富进行读取或操作了。例如使用 GET
方法取得数据,使用 POST 方法来创制数量,使用 PUT 或 ME奥迪Q3GE
方法来更新数据,使用 DELETE 方法来删除数据。

      REST API 默许会重临 Atom
格式的多寡,不过我们也能够依照须要设定再次来到 JSON
格式的数量。作者个人更爱好处理 JSON 格式,JSON 数据转换为 C#
的靶子,有贰个很棒的网站:http://json2csharp.com/C++,。通过这么些网站,大家能够把
JSON 数据直接转换为 C# 对象,节省了成都百货上千编写制定 C# 基础代码的时间。

接下去大家来看看 REST API 的结构组成:

      端点的基本U帕杰罗L是:https://server/site/_api ,它是独具 SharePoint
REST API 的底蕴,在那之中 server 代表服务器的称号,site
代表一定网站的称呼恐怕路径。

     
若是要拜访特定的网站集,U本田UR-VL是:https://server/site/\_api/site,假设要拜访特定的网站,URAV4L则是:https://server/site/\_api/web
。那二种是最常用的 API ,还有三种 API
能达成部分特定的职能,如:使用搜索服务:https://server/site/\_api/search,访问用户配置文件:http://server/site/_api/SP.UserProfiles.PeopleManager 等。

      下边大家以一定网站为例,来看一下 REST API
能成就哪些常见操作:

      (1)对列表和列表项的操作

       列表:

       URL:http://&lt;网站 URL>/web/lists(guid'<列表 ID>’) 或 http://&lt;网站 URL>/web/lists/getbytitle(‘title of
list’)

      
列表项集合:

       URL:http://&lt;网站 URL>/web/lists(guid'<列表 ID>’) /items 或 http://&lt;网站 URL>/web/lists/getbytitle(‘title of
list’)/items

     
钦命 ID 的列表项:

      URL:http://&lt;网站 URL>/web/lists(guid'<列表 ID>’) /items(item id) 或 http://&lt;网站 URL>/web/lists/getbytitle(‘title of
list’)/items(item
id)

      
如上 API 地址所示,大家能够透过List 本身的 GUID 只怕 Title
来获得List,大概List的项集合的数码。当要求向列表中插入新项时,大家供给选择列表项集合
API,使用 POST
方法插入数据。而供给修改列表中某一项时,则必要利用钦点列表项 API,使用
MECRUISERGE 方法来更新数据。

      
而涉嫌到数量修改时,大家须求把措施类型,如 POST,METiggoGE
等作为X-HTTP_Method
键的值添加到请求标头中。而且亟需将呼吁窗体摘要值作为 X-RequestDigest
的值传递进入。该值的得到方式是:向 http://网站URL/\_api/contextinfo
发送全部空正文的 POST 请求,并在 contextinfo 终结点重回的 XML 中领取
d:FormDigestValue 节点的值。还有便是标头中的 IF-MATCH
键的值,须要赋值为列表或列表项的 etag 值。假使赋值为
“*”,则不会考虑并发问题。

      
其它关于数据操作是内需 POST 的始末:

      
更新时,必须带有 __metadata:type
和急需创新的字段。其余不须要更新的字段能够不投入。删除时,U中华VL指向该条记录即可。添加时,U途乐L指向记录集合,POST内容应涵盖__metadata:type 和急需插入的必填字段

      (2)对文本和文件夹的操作

       文件:

       URL:http://&lt;网站
URL>/_api/web/getfilebyserverrelativeurl(‘/<文件夹名称>/<文件名称>’)

       文件列表:

       URL:http://&lt;网站
URL>/_api/web/getfolderbyserverrelativeurl(‘/<文件夹名称>’)/files

       文件夹:

       URL:http://&lt;网站
URL>/_api/web/getfolderbyserverrelativeurl(‘/<文件夹名称>’)

       通过以上 API
操作,大家得以做到文件和文书夹的读取,上传和修改等操作。

       当必要向文书档案库插入文书档案时,UCR-VL
是:http://&lt;site
url>/_api/web/GetFolderByServerRelativeUrl(‘/Shared
Documents’)/Files/add(url=’a.txt’,overwrite=true),那样,我们就把文件以
a.txt 为寄放名称插入到了 Shared Documents
文书档案库中。而文书档案内容的上传进程是:文件读取为 Stream,放入 POST
内容中。文件还有其它过多中操作形式,如更新,签出,签入,删除等。

      (3)对用户、组和脚色的操作

       组:

       URL:http://&lt;网站 URL>/_api/web/sitegroups(<组 ID>)

       用户:

       URL:http://&lt;网站
URL>/_api/web/siteusers(@v)?@v='<登录名>’

       角色:

       URL:http://&lt;网站
URL>/_api/web/roledefinitions(<角色定义
ID>)

      (4)对用户配置文件的操作

       URL:http://&lt;网站
url>/_api/sp.userprofiles.peoplemanager

      (5)对字段的操作

       URL:http://&lt;网站 url>/_api/web/fields(‘<字段 id>’) 或 http://&lt;网站 url>/_api/web/lists(guid'<列表 id>’)/fields(‘<字段 id>’)

       上边大家介绍了列表,文件夹等品类 API
的地点构造,接下去大家看看那些请求地址中允许的查询参数都有如何:       

       (1)$select 参数

       如 SQL 中 Select 的使用格局,那里的 $select
也是分明请求再次来到的结果中供给包涵怎么样字段,使用形式是:_api/web/lists/getByTitle(‘Books’)/items?$select=Author,Title,ISBN,那样大家就会在赢得Books这几个列表时,只取得作者,书名和ISBN四个有效字段。

       (2)$filter 参数

       如 SQL 中 Where 的施用情势,那里的 $filter
是用来筛选数据的筛选标准,使用办法是:_api/web/lists/getByTitle(‘Books’)/items?$filter=Author
eq ‘马克 Twain’,那样大家就能取到 Books 列表中,Author 为 马克 特温的数额。

       (3)$expand 参数

      
这些参数用于钦定重返联接列表中的哪些投射字段。使用方法是:_api/web/lists/getByTitle(‘Books’)/items?$select=Title,PublishedBy/Name&$expand=PublishedBy,那里的映照字段是
PublishedBy。

       (4)$top 参数

      
那些参数用户内定重临结果集中的前N项,使用办法是:_api/web/lists/getByTitle(‘Books’)/items?$top=2,那样大家就会重返那么些结果集中的前两项(如不足两项则赶回全部数量)。

       (5)$skip 参数

      
那么些参数用于在结果集中跳过钦点数量的项,而回到剩余的项。使用形式是:_api/web/lists/getByTitle(‘Books’)/items?$skip=2,那样我们就会在回到结果中跳过前两项而回到别的的项,如结果不足两项,则赶回空结果集。

       (6)$orderby 参数

       那些参数用于对结果集进行排序,如 SQL
中应用办法,分为升序和降序二种艺术,以 asc 和 desc
关键字来标识。使用格局是:_api/web/lists/getByTitle(‘Books’)/items?$orderby=ID
desc。那样我们回到的结果集,就会以 ID 为专业来降序排列。 

       上面那张表,涵盖了 SharePoint REST API
中大致全部的询问条件和数字、字符等的比较根本字。例如 $filter=Author eq
‘Mark Twain’,正是筛选 Author 等于 马克 Twain 的项,而 Author ne ‘马克特温’,则是筛选不等的项。那是针对字符串的相比较操作,而针对性数字的则囊括 
lt(小于)、le(小于等于)、gt(大于)、ge(大于等于)、eq(等于)和
ne(不等于)。还有针对日期和时间的相比较符,见表中表达。

       C++ 1 

       最终还关系到一个授权的题材,如前方所说,远程访问都须求先授权才能访问财富。大家得以经过
OAuth 授权的方式来实现应用授权和身份验证。将取得的 OAuth
访问令牌参加到请求标头中。那里大家不做详细介绍了。关于
API自身的施用进程,和任何 API
没什么差距,那里就不做详细介绍了。正是二个发出请求,获得重返结果(Atom或JSON),然后解析结果的经过。

       那样大家就把 SharePoint REST API
的重组和主导的运用格局介绍完了,希望对我们在 Windows 商店应用中动用
SharePoint REST API 有所援救,多谢。