SharePoint—用REST方式访问列表
REST的定义与作用
在SharePoint 2010中,基本上有如下几种数据访问方式:
- 服务器端对象模型
- LINQ to SharePoint
- Web Service
- 客户端对象模型
- ADO.NET Data Service (REST协议)
- ADO.NET Data Service (强类型)
REST是SharePoint中一种数据访问方式,这种方式只支持列表数据访问接口,位于_vti_bin目录下的的listdata.svc。
REST的特点及原理
REST协议的一个特点,就是可以把我们需要的操作都浓缩在一个URL中(比如通过:_vti_bin/listdata.svc/Test(3)就可以获取到Test这个列表中ID为3的那个条目的信息,当然也可以通过一些特殊的写法实现简单的查询、排序功能),并可以通过GET、POST、PUT、DELETE、MERGE这几种HTTP访问方式,来实现列表数据的增、删、查、改。
通过REST协议访问数据的原理如下图所示:
图 01
通过这种方式访问的时候,客户端使用JSON的格式把需要的数据通过某种HTTP方法发送至包含listdata.svc的Url地址上(如果是Get方法的话,就没有发送的数据),然后返回数据的时候,可以返回Xml格式(Atom协议),当然也可以返回JSON格式(如果不特别声明的话,默认使用Atom协议,也就是Xml格式)。
和客户端对象模型相同的是,我们通过Url,可以定义所需要返回的那些字段值,从而减少客户端和服务器端的数据传递大小。
REST数据访问常用语法
这里主要介绍GET方式访问数据的语法,即Url语法。
例如:
获取Test表所有数据
http://localhost/_vti_bin/ListData.svc/Test()
根据Id获取数据项
http://localhost/_vti_bin/ListData.svc/Test(1) //获取Test表Id为1的数据项
获取指定字段数据 $select
http://localhost/_vti_bin/ListData.svc/Test?$select=* //获取Test表所有可用字段
http://localhost/_vti_bin/ListData.svc/Test?$select=Name,Url,Description //获取Test表中字段名称为Name、Url、Description三个字段
获取前n条数据 $top
http://localhost/_vti_bin/ListData.svc/Test?$top=n //获取Test表中的前n条数据 n为大于0的正整数
根据某字段排序 $orderby 支持多字段排序,字段间以逗号隔开
http://localhost/_vti_bin/ListData.svc/Test?$orderby=PublishDate asc //按PublishDate字段升序 支持asc/desc
按条件晒选 $filter
http://localhost/_vti_bin/ListData.svc/Test?$filter=Id le 10 //晒选Id小雨等于10的项目
REST支持的运算符
数字:Lt、Le、Gt、Ge、Eq、Ne
字符串:startsWith、substringof、Eq、Ne
日期时间:day()、month()、year()、hour()、minute()、second()
实现比较复杂的查询
http://localhost/_vti_bin/ListData.svc/Test
?$select=*
&$orderby=PublishDate,Id desc
&$top=10
&$filter=Id Ge 3
//选择Test表所有可用字段Id大于等于3的项目中的前10条记录,并按照PublishDate字段、Id字段降序排列
REST语法注意事项
- 利用$select选择指定列的数据、$orderby按某字段排序、$filter晒选数据时,若字段为系统内置字段,则字段名称为当前语言环境下的字段名称。例如中文「标题」字段,不能写为Title。必须为「标题」。
- 用户自己添加的英文字段,字段名称首字母必须为大写。例如,新建字段命名为name,此字段作为url一部分时必须写为Name。
- 另外,若用中文当做Url的一部分,会发生异常,此时要先把中文字段编码,然后把编码后的字段名称变量拼接到Url中
例如:var createDate = encodeURIComponent("标题");
var url = "/_vti_bin/ListData.svc/Test?$select=*
&$orderby=" + createDate + " asc
&$top=10&
$filter=Name ne 'bear'";
- 利用$filter晒选数据时,只能有一个晒选条件。
- 复杂查询时,拼接Url时,须按照$select->$orderby->$top->$filter的顺序。
REST的使用方法
本节只介绍Jquery ajax以get方式异步请求。如果不指定数据的请求格式,则REST默认返回数据格式为XML格式。若要返回格式为json,则指定ajax请求的dataType:’json’或contentType:’application/json’即可。
调用代码如下:
var createDate = encodeURIComponent("标题");
var url = "/_vti_bin/ListData.svc/Test?$select=*
&$orderby=" + createDate + " asc
&$top=10&
$filter=Name ne 'bear'";
$.ajax({
type: 'get',
dataType: 'json',
url: url,
success: function (data) {
//result = data.d.results; //查询所有列表项
result = data.d; //带条件查询 或$top=n
},
error: function (a, b, c) {
alert(a + b + c);
},
complete: function () {
callback(result);
}
});
注:当查询所有列表项为全部是result = data.d.results;
带$filter或者$top时,result = data.d
REST方式的弊端与妥协方式
问题:由于$filter只支持单个条件,所以对于复杂的查询要求可能无法直接达到要求。
妥协方式:先根据Url按某条件筛选,然后在ajax请求完成后对结果进行进一步加工处理
参考文档:
http://msdn.microsoft.com/zh-SG/library/fp142385
http://blog.sina.com.cn/s/blog_5d93d7aa0101c5lt.html
http://technet.microsoft.com/zh-cn/magazine/gg552613(office.14).aspx
http://msdn.microsoft.com/en-us/library/ff798339.aspx
SharePoint—用REST方式访问列表的更多相关文章
- SharePoint服务器端对象模型 之 访问网站和列表数据(Part 5)
(五)列表条目(SPListItem) SharePoint中数据的存储基本上都是通过列表条目来完成(文档库中的文档也是一种特殊的列表条目),因此在SharePoint应用开发中,最终是要和列表条目打 ...
- SharePoint服务器端对象模型 之 访问网站和列表数据(Part 2)
(二)列表(SPList) 列表是SharePoint中最为重要的数据容器,我们一般保存在SharePoint中的所有数据,都是保存在列表中(文档库也是一种列表),因此列表对象在SharePoint的 ...
- SharePoint 2010用“localhost”方式访问网站,File not found问题处理方式
场景:本地服务器上,用“localhost”方式访问网站:在某网站集(Site Collection)下的子网站(Sub Site)中,点击网站权限菜单(Site permissions)等关于调用L ...
- Linux实现https方式访问站点
超文本传送协议(HyperText Transfer Protocol,HTML)是一种通信协议,它允许将超文本标记语言文档从web服务器传送到wel浏览器. HTML的特点: 1.支持客户/服务器模 ...
- salesforce 零基础学习(三十三)通过REST方式访问外部数据以及JAVA通过rest方式访问salesforce
本篇参考Trail教程: https://developer.salesforce.com/trailhead/force_com_dev_intermediate/apex_integration_ ...
- Windows Store App 近期访问列表
Windows 8系统在管理用户的文件时,会将用户近期访问的文件添加到对应应用的近期访问列表中,所有的Windows应用商店应用都有各自的近期访问列表,根据文件的上一次访问时间,可以在列表中对文件进行 ...
- 非链接方式访问数据库--查询的数据集用Dataset来存储。
private void Button_Click_1(object sender, RoutedEventArgs e) { //非链接方式访问数据库, //1创建连接对象(连接字符串) using ...
- ADO.NET 连接方式和非链接方式访问数据库
一.//连接方式访问数据库的主要步骤(利用DataReader对象实现数据库连接模式) 1.创建连接对象(连接字符串) SqlConnection con = new SqlConnection(Co ...
- httpclient 认证方式访问http api/resutful api并获取json结果
最近,因公司线上环境rabbitmq经常发生堆积严重的现象,于是跟运维组讨论,帮助开发个集中监控所有rabbitmq服务器运行情况的应用,需要通过java访问rabbitmq暴露的http api并接 ...
随机推荐
- CentOS系统下安装配置ftp服务
安装配置步骤: rpm -ivh /opt/bak/vsftpd-2.2.2-11.el6.x86_64.rpm --本地安装vsftpd ll /etc/vsftpd/ --查看vsftpd的配置 ...
- 运费模版源码(.net)
之前写了一篇关于nop商城系统中运费模版模块相关的随笔,说要把源码贴出来,一直没有贴,现在我把源码贴出来,有任何问题欢迎留言讨论. 源码是在nop上写的,所以文件夹结构和nop的文件夹对应,源码包含的 ...
- select制作分层级目录,让select显示和可下拉选择的"不一样"
今天遇到一个特殊的select问题,需求是这样的:每次点击这个select时,根据选择的option的值做出相应的处理并返回新的select,option内容.所以大致思路是给这个select绑定ch ...
- ASP.NET Web API 2 入门
本文参考:http://www.asp.net/web-api/overview/getting-started-with-aspnet-web-api/tutorial-your-first-web ...
- hdoj 1016 Prime Ring Problem
Problem Description A ring is compose of n circles as shown in diagram. Put natural number 1, 2, ... ...
- 一种模拟position: sticky;的方法
直接上代码,本例采用了jQuery来进行介绍 CSS部分: .sticky { position: fixed; top: 0; } JS部分: var stickyBar = $('.sticky- ...
- 【转】linux yum命令详解
yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器.基於RPM包管理,能够从指定的服务器自动下载RP ...
- 开园第一篇 - 论移动开发环境 IOS与Android的差异
首先,在真正写技术之前做个自我简介.本人08年开始学c语言 一年后,转vc++.开始接触MFC MFC做了两年.转眼11年了我考上了一个不知名的大专.搞C++发现没有市场了因为当时酷狗腾讯的软件已经日 ...
- gulp-rev-orig
给客户演示项目时,老是会出现由于缓存,造成的最新的样式或者效果出不来的情况,还得需要手动清除缓存操作,一方面呢,会给客户留下不好的印象,而且也会多了清缓存这一过程,和同事商量过后,决定使用在css或者 ...
- Angular概念纵览
Conceptual Overview Template(模板): HTML with additional markup (就是增加了新的标记的HTML) Directive(指令): extend ...