[sharepoint]Rest api相关知识(转)
写在前面
最近又开始弄rest api了,通过sharepoint rest api获取站点信息,Items,fields非常方便,再结合OData查询,更是得心应手。这里记录学习的时候用到的知识点,以及查询的资料。
Sharepoint Rest 端点URI结构
在可以使用 REST 服务访问 SharePoint 资源之前,首先必须知道指向该资源的 URI 端点。只要可能,这些 REST 端点的 URI 就会准确地模仿 SharePoint 客户端对象模型中资源的 API 签名。例如:
客户端对象模型方法:
List.GetByTitle(listname).GetItems()
REST 端点:
http://server/site/_api/lists/getbytitle('listname')/items
但是,在某些情况下,为了遵守 REST 或 OData 约定,端点 URI 会不同于相应的客户端对象模型签名。
下图显示 SharePoint REST URI 的通用语法结构。
SharePoint REST URI 语法结构
SharePoint 资源的部分端点偏离了这种语法结构:
需要复杂类型作为参数的方法。
如果对应的客户端对象模型方法要求复杂类型作为参数传递,则 REST 端点可能偏离此语法构造说明 REST 限制。
静态方法和属性。
REST 端点偏离代表静态方法和属性的 URI 的语法结构。
确定 SharePoint 2013 REST 服务端点
若要为 SharePoint 资源构造 REST 端点,请按照以下步骤执行操作:
从 REST 服务引用开始:
http://server/site/_api
指定合适的入口点。例如:
http://server/site/_api/web
从入口点导航到您要访问的特定资源。这包括为与客户端对象模型中的方法对应的端点指定参数。例如:
http://server/site/_api/web/lists/getbytitle('listname')
引用端点 URI 中的 SharePoint 2013 REST 服务
使用 _api 来表示端点 URI 中的 SharePoint 2013 REST 服务。REST 服务属于 client.svc Web 服务的一部分。但是,要尽早构造 REST URI 以及缩短基础 REST URI 路径,REST 服务使用 _api 将显式引用 client.svc Web 服务的需求抽象出来。REST 服务将承认并接受引用 client.svc Web 服务的 URI。例如,您可以使用 http://server/site/_vti_bin/client.svc/web/lists 来代替 http://server/site/_api/web/lists。但是,使用 _api 是首选惯例。URL 限制为 256 个字符,因此,使用 _api 可以缩短基础 URI,以留下更多的字符用于构造剩余 URL。
指定 SharePoint 2013 REST 服务的入口点
REST 服务的主要入口点表示网站集合以及指定上下文的网站。这样,这些入口点与客户端对象模型中的 ClientContext.Site 属性和 ClientContext.Web 属性对应。
要访问特定的网站集合,请使用以下构造:
http://server/site/_api/site
要访问特定的网站,请使用以下构造:
http://server/site/_api/web
其中 server 表示服务器的名称,site 表示特定网站的名称或路径。
除 /site 和 /web 外,REST 服务包括几个其他访问点,通过这些访问点,开发人员可导航至特定功能。下表列出了部分访问点。
功能区域 |
访问点 |
---|---|
网站 |
http://server/site/_api/site |
Web |
http://server/site/_api/web |
用户配置文件 |
http:// server/site/_api/SP.UserProfiles.PeopleManager |
搜索 |
http:// server/site/_api/search |
发布 |
http:// server/site/_api/publishing |
导航到您要访问的特定资源
从这里,通过遍历对象模型并使用用斜杠分隔的客户端对象模型中 API 的名称构造多个特定 REST 端点。下表显示客户端对象模型调用及等效 REST 端点示例。
客户端对象模型 API |
REST 端点 |
---|---|
ClientContext.Web.Lists |
http://server/site/_api/web/lists |
ClientContext.Web.Lists[guid] |
http://server/site/_api/web/lists(‘guid’) |
ClientContext.Web.Lists.GetByTitle("Title") |
http://server/site/_api/web/lists/getbytitle(‘Title’) |
终结点 URI 不区分大小写。例如,在上表中,使用 /getbytitle 指定 GetByTitle() 方法的 REST 等效项。
指定 REST 端点 URI 中的参数
SharePoint 2013 扩展了 OData 规范,允许您使用括号来指定方法参数和索引值。这可防止包含多个名称相同参数的 URI 中的潜在混淆问题。例如,下面两个 URI 包含名称相同的参数:
http://server/site/_api/web/lists/getByTitle('Announcements')/fields/getByTitle('Description')
http://server/site/_api/web/lists('<guid>')/fields/getById('<guid>')
要指定多个参数,请将参数作为名称/值对包含在内,并用逗号将参数分隔。例如:
http://server/site/_api/web/getAvailableWebTemplates(lcid=1033, includeCrossLanguage=true)
下图显示了 SharePoint REST 参数语法。
SharePoint REST 参数语法
些方法要求大的有效载荷作为参数。对于要与其对应客户端对象模型 API 保持功能平衡的 REST 端点,这些端点必须接受复杂类型作为参数。在这种情况下,REST 服务扩展了现有 OData 协议,允许这些 REST 端点接受单个复杂类型作为参数。这仅适用于 POST 操作,并且您必须根据 OData 标准以 Atom 格式或 JSON 格式传递复杂类型。
例如,ListCollection.Add 方法以 Microsoft.SharePoint.Client.ListCreationInformation 对象作为参数。要将列表添加到指定网站,请按如下方式构造相应的 REST 端点:
http://server/site/_api/web/lists/add
然后,在请求正文中传递复杂类型,此处使用 JSON 进行格式设置。
{ "d" : {
"results": {
"__metadata": {
"type": "SP.ListCreationInformation"
},
"CustomSchemaXml": "…large payload…/",
"Description": "desc",
"DocumentTemplateType": "1",
"TemplateType": "101",
"Title": "Announcements"
}
}
}
在 REST 服务调用中使用参数别名
您可以在 OData 中使用"参数别名"语义将参数传递到 SharePoint REST 端点。在参数别名中,用参数调用中的别名标识参数值,而实际值则在 URI 的查询字符串中指定。这允许您通过使用查询字符串支持多种类型的字符和一致的格式。
例如,以下两个 REST URI 为等效项:
直接指定参数值:
http://server/site/_api/web/applyWebTemplate("STS#0")
使用参数别名,并在 URI 的查询字符串中指定实际参数值:
http://server/site/_api/web/applyWebTemplate(title=@template)?@template="STS#0"
但是,SharePoint REST 服务不支持通过参数别名传递复杂类型。例如,以下 URI(参数别名中包含复杂类型)不受支持:
http://server/site/_api/userProfiles/People(7)/GetWorkplace(@address)?@address={"__metadata":{"type: "ODataDemo.Address"},"Street":"NE 228th", "City":"Sammamish","State":"WA","ZipCode":"98074","Country": "USA"}
指定字典作为参数值
对于与以 Dictionary<String, String> 字典作为参数的方法相对应的 REST 端点,在查询字符串中将字典作为一组以逗号分隔的名称/值对传递。
Key 多值对象的键
Value 对象的值
ValueType 对象的值类型。对于映射到现有实体数据模型 (EDM) 类型的简单值类型,REST 服务返回相应的 EDM 类型字符串;例如,"Edm.String"。如果不是,则 REST 服务返回由 Type.ToString 功能返回的值类型。
在查询字符串中指定参数值
如果您的 REST URI 以方法调用结束,则可以使用查询字符串语法来指定方法的参数值。例如:
http://<server>/<site>/_api/web/applyWebTemplate?template="STS#0"
下图显示查询字符串中参数的 REST 服务语法。
要构造与静态方法或属性对应的 URI,请使用 ECMAScript 对象模型中的对应 API 名称,该名称以命名空间声明开始并使用点记法 。例如,ECMAScript 客户端对象模型中的 SP.Utilities.Utility.getImageUrl(imageName) 将具有以下 REST 等效物:
http://server/site/_api/SP.Utilities.Utility.getImageUrl('imageName')
但是,静态属性只能直接访问,不允许作为较大 URI 组成的一部分。例如,允许直接访问 REST 中的 SP.Utility.AssetsLibrary 方法,如下所示:
http://server/site/_api/SP.Utility.assetsLibrary/id
但是,不允许将该资源位置用作更复杂 URI 的参数,如下面的示例所示:
http://server/site/_api/getList(~SP.Utility/assetsLibrary/id)
下图显示 SharePoint REST 服务静态成员语法。
总结
rest api对我来说,刚开始是个小白,到现在用的越来越顺手,其中msdn对我来说帮了不少的忙,没空就看msdn,觉得这篇文章讲的还是比较清楚的,就收集到自己的博客中了。
参考文章:
https://msdn.microsoft.com/zh-cn/library/office/dn292556.aspx
https://msdn.microsoft.com/ZH-CN/library/dn551366.aspx
https://msdn.microsoft.com/zh-cn/library/office/fp142380(v=office.15).aspx
https://msdn.microsoft.com/zh-cn/library/gg309461.aspx
https://msdn.microsoft.com/en-us/library/jj860569.aspx
[sharepoint]Rest api相关知识(转)的更多相关文章
- Appium+Python API相关知识了解
首先,要先了解,官方Appium API // https://testerhome.com/topics/3144 刚开始的时候,没有看官方API,然后在网上瞎找学习资料,发现python相关的很少 ...
- [sharepoint]rest api文档库文件上传,下载,拷贝,剪切,删除文件,创建文件夹,修改文件夹属性,删除文件夹,获取文档列表
写在前面 最近对文档库的知识点进行了整理,也就有了这篇文章,当时查找这些接口,并用在实践中,确实废了一些功夫,也为了让更多的人走更少的弯路. 系列文章 sharepoint环境安装过程中几点需要注意的 ...
- 【Python五篇慢慢弹(5)】类的继承案例解析,python相关知识延伸
类的继承案例解析,python相关知识延伸 作者:白宁超 2016年10月10日22:36:57 摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下.官方给 ...
- listener监听器的相关知识
从别人的博客上我学习了listener的相关知识现在分享给大家 1.概念: 监听器就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上 ...
- 【转】java NIO 相关知识
原文地址:http://www.iteye.com/magazines/132-Java-NIO Java NIO(New IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的 ...
- Windows 商店应用中使用 SharePoint REST API
前面一篇我们介绍了 Office 365 REST API 的官方工具的使用,本篇我们来看一下 SharePoint REST API 本身的描述.结构和使用方法,以及一些使用经验. 首先来看看Sha ...
- 【转载】前端面试“http全过程”将所有HTTP相关知识抛出来了...
原文:前端面试“http全过程”将所有HTTP相关知识抛出来了... 来一篇串通,一个http全过程的问题,把所有HTTP相关知识点都带过一遍 http全过程 输入域名(url)-->DNS映射 ...
- HTML入门基础教程相关知识
HTML入门基础教程 html是什么,什么是html通俗解答: html是hypertext markup language的缩写,即超文本标记语言.html是用于创建可从一个平台移植到另一平台的超文 ...
- Stack Overflow 上排名前十的与API相关的问题
Stack Overflow是一个庞大的编程知识仓库,在Stack Overflow 上,数百万的提问被回答,并且这些回答都是高质量的.这就是为什么在Google搜索结果的排行榜上,Stack Ove ...
随机推荐
- Module(模块)
1.每个Angular至少有一个根Module 2.Module时一个带有@NgModule装饰符的类 3.最简单的Module import { NgModule } from '@angular/ ...
- python之路-----多线程与多进程
一.进程和线程的概念 1.进程(最小的资源单位): 进程:就是一个程序在一个数据集上的一次动态执行过程.进程一般由程序.数据集.进程控制块三部分组成. 程序:我们编写的程序用来描述进程要完成哪些功能以 ...
- top 常用
top -c 查看进程 同时 shift +m 内存倒序
- LNMP(一)
第二十课LNMP(一) 目录 一.LNMP架构介绍 二.MySQL安装 三.PHP安装 四.Nginx介绍 五.Nginx安装 六.扩展 一.LNMP架构介绍 之前已经学习过LAMP架构,与LAMP相 ...
- RabbitMQ 的安装----windows环境
一.RabbitMQ在windows下的安装 RabbitMQ 它依赖于Erlang,在window上安装时,需要先安装Erlang. 首先确定你的window电脑是32位还是64位,然后下载对应版本 ...
- C++内存管理-new,delete,new[],placement new的简单使用
技术在于交流.沟通,本文为博主原创文章转载请注明出处并保持作品的完整性 首先,我们先看一下C++应用程序,使用memory的途径如下图所示 C++应用程序中申请内存基于分配器的实现(std::allo ...
- Python基础03_pycharm
pycharm的安装还是很简单的,一路next. 看起来Jet Brains 家的产品长相都差不多啊. 主要是create new project时,路径和解释器的选择,我电脑上有2.7和3.6 所以 ...
- 远程链接 aws Windows Server 2016 Base Nano
第一次接触Windows Server 2016 Base Nano,平时工作中或者自己私下使用win的服务器都是带桌面版本的 而这次在aws一不小心开了一台Nano服务,刚开始我都不知道这个是什么玩 ...
- day 12 名称空间和闭包函数
函数嵌套 按照函数的两个阶段分为: 嵌套调用:在一个函数内部调用另一个函数 嵌套定义:在一个函数内部定义另一个函数 名称空间(namespace):存储名字的内存区域 名称空间的分类: 内置名称空间: ...
- 手把手教你用git
一.如何安装git 下载地址: https://git-scm.com/download/win 根据自己的电脑选择是32位的还是64位的.下载完后直接运行,之后一直next就好了.安装成功后,会有这 ...