这篇文章会介绍:

  • 简单的介绍REST,OData
  • OData实现细节
  • OData在SharePoint 2013中的实现

为什么REST很重要

过去几年基于REST的webservice在IT企业越来越多的被人使用,尤其是跟微软相关的。REST 服务使用起来更简单,使得企业降低了使用门槛。REST服务非常容易的被JS和JQuery类库的调用。过去几年中,OData很快的变成了最新的数据访问API,他之所以如此受欢迎,因为他是第一个主流的,为基于Http的客户提供的API。Odata API为 通过网络为CRUD 操作提供了标准化的API,如Get,Post 以及Put,OData 服务也在网上越来越流行。 OData服务的例子如:NeFlix,Dellas,Azure。Excel 2010,Excel 2013是可以调用任何以OData作为数据源的应用程序。

这里面我们介绍一些学习OData时会遇到的关键点,并且了解OData是怎么工作的

OData Resource

Is Described in an Entity Data Model by

Collection

Entity Set

A navigation property on an entity type that identifies a collection of entities

Property of an entry

Primitive or Complex Entity Type Property

Complex Type

Complex Type

Link

A navigation Property defined on an Entity Type

Service Operation

Function Import

Odata的实现细节

OData的主要目的是把CRUD操作映射到Http行为上,例如你可以:

  • 用Http Get来实现查询
  • 添加新的实体,如ListItem或者数据库记录通过Http Post
  • 用Http Put或者Http Merge来实现更新
  • 用Http Delete来实现删除的功能

这些行为也暗示了你可以通过http,用CURD来操作数据的方式。

Http Merge相对于Http Put的优势在于你可以只改变其中的某些数据,而让其他的数据保留原有的值。 Http Put也会把数据重置为默认值如果你没有显示的指定它。

作为一个开发,如果想要知道怎么用OData,你首先需要了解OData的地址是如何构造的,每一个Uri都有3个重要的部分:

  1. Service root Uri

是一个访问网络的入口,如.svc文件

  1. Resource Path

它表示了指定的对象,如SiteCollection,List或者listitem,

  1. Query string option

第三部分是查询参数,让你能够处理一系列的行为,如查询,排序等。

OData在SharePoint2013中的实现

Service Root Uri包含了目的站点的url 加上client.svc的相对于服务器的Url,

Resource Uri,指定了要操作的目的对象,如Site,List或者ListItem。

因此你可以通过这样的Url

http://contoso/_vit_bin/client.svc/Web

来访问一个Web,这个地址有另外一个别名

http://contoso/_api/Web

这两个地址都是等价的。输入上面的地址后,你会看到如下信息:

下面的路径展示了3中访问SharePoint资源的路径:

_api/web/lists

_api/web/lists/getByTitle('Annoucements')

_api/web/getAvailableWebTemplates(lcid=1033)

下面一部分例子会为大家讲述如何简单的调用REST服务,你只需要一能够通过SharePoint 2013的认证的浏览器。你可以通过输入基于REST的地址,来使用Http Get操作来进行查询。这个提供了一种快速的方式,通过拼接Url,来查询,过滤,排序内容。

下面的演示就不多说了,在浏览器中输入下面的Url试试你看到的数据吧:

http://contoso.com/_vti_bin/client.svc/Web

http://contoso.com/_api/Web/Lists

http://contoso.com/_api/Web/lists?$select=Title

http://contoso.com/_api/Web/lists/getbytitle('Annoucements')/Items

http://contoso.com/_api/Web/lists/getbytitle('Annoucements')/Items?$select=Title,Body

http://contoso.com/_api/Web/lists/getbytitle('Annoucements')/Items?$filter=startswith(Title,'P')

怎么样,这种方式来访问SharePoint是不是简单了很多?平时开发中节省了不少的时间把?

参考文章:

https://msdn.microsoft.com/en-us/library/office/jj164022(v=office.15).aspx#WritingData

SharePoint 2013 REST 以及 OData 基础的更多相关文章

  1. SharePoint 2013的REST编程基础

    1. SharePoint 2013对REST编程的支持 自从SharePoint2013开始, SharePoint开始了对REST 编程的支持,这样除了.NET , Silverlight, Po ...

  2. [MSDN] 使用 SharePoint 2013 中的 JavaScript 库代码完成基本操作

    MSDN:http://msdn.microsoft.com/zh-cn/library/jj163201.aspx 了解如何编写代码以在 SharePoint 2013 中使用 JavaScript ...

  3. BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第1章节--SharePoint 2013 介绍 SharePoint 2013 平台

    BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第1章节--SharePoint 2013 介绍 SharePoint 2013 平台         SharePoin ...

  4. BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第1章节--SharePoint 2013 介绍 处理开发者需求

    BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第1章节--SharePoint 2013 介绍 处理开发者需求         SharePoint本质上是一个平台.你 ...

  5. SharePoint 2013 create workflow by SharePoint Designer 2013

    这篇文章主要基于上一篇http://www.cnblogs.com/qindy/p/6242714.html的基础上,create a sample workflow by SharePoint De ...

  6. 实现一个基于 SharePoint 2013 的 Timecard 应用(上)

    在 SharePoint 2013 上面实现一个 Timecard 应用的想法来自一个真实的需求,而实现的方案在我脑海里面盘旋已经很久了,终于这几天准备安排点儿时间将它实现出来. “ We start ...

  7. SharePoint 2013 入门教程

    以下文章是自己在学习SharePoint的过程中,不断积累和总结的博文,现在总结一个目录,分享给大家.这个博客也是自己从SharePoint入门,到一个SharePoint开发的成长记录,里面记录的都 ...

  8. SharePoint 2013 托管导航 无法被开启的解决办法

    在阅读了园子中霖雨的一片博文<SharePoint 2013 托管导航及相关配置>之后,非常想尝试一下SharePoint 2013 中的这个新功能,但是我的网站集包括样式是从2010升级 ...

  9. SharePoint 2013 图文开发系列之WebPart

    这是我们介绍SharePoint开发入门的第一篇,在这一篇里,我们会介绍SharePoint开发的几个关键物理路径,一些开发技巧和最基础的WebPart开发. 开发工具 在SharePoint 201 ...

随机推荐

  1. python面向对象个人总结

    基础概念:面向对象其实就是类与对象的使用. 类是模板,对象是实例.模板创建实例,实例去类里面去执行类的方法.类的例子: class Foo:           def Bar(self):      ...

  2. CodeForces 675C Money Transfers(贪心+奥义维护)

    题意:n个银行. 其中存款有+有-. 总和为0. n个银行两两相邻((1,n),(1,2)...(n-1,n)); 问最少移动几次(只能相邻移动)能把所有数变为0. 分析:思路很简单,起始答案算它为n ...

  3. 实践一:Linux基础实践

    一.Linux基础实践 1.1 1. 掌握软件源的维护方法,配置系统使用软件源镜像.掌握通过软件源来查找,安装,卸载,更新软件的方法. 这部分内容在许多学长学姐的报告里都有很详细的讲解,我在此就不赘述 ...

  4. SQL触发器中的deleted表和inserted表

    SQL触发器中的deleted表和inserted表 在触发器语句中用两个特殊的表一个是deleted表和inserted.它们是通过触发器操作自动创建驻留在内存中的临时表. 描述: Deleted表 ...

  5. modelsim基本操作步骤及每步骤问题解决1(后续有改动会更新)

    ①File ->New =>Project出现工程对话框->1)工程命名,2)安放路径自己设置,3)库默认work.点击OK 然后出现添加文件到工程对话框->可新建文件或直接添 ...

  6. POJ 2502 - Subway Dijkstra堆优化试水

    做这道题的动机就是想练习一下堆的应用,顺便补一下好久没看的图论算法. Dijkstra算法概述 //从0出发的单源最短路 dis[][] = {INF} ReadMap(dis); for i = 0 ...

  7. 安装crab

    1. crab 介绍: Recommender systems in Python 官网介绍:http://muricoca.github.io/crab/ 在安装过程中,发现一个问题,我已经安装了A ...

  8. SQLServer语句 汇总

    SQL Server语句 序号 功能 语句 1 创建数据库(创建之前判断该数据库是否存在) if exists (select * from sysdatabases where name='data ...

  9. XML Xpath学习

    Xpath是一门在xml文档中查找信息的语言. Xpath可用来在xml文档中对元素和属性进行遍历. <1>路径表达式1: 斜杠(/)作为路径内部的分隔符 同一个路径有绝对路径和相对路径两 ...

  10. SQL删除重复数据

    --首先将不是重复的数据提取出来,保存到一个临时表中 select distinct * into #temp from JX_Score --然后删除原来的表 delete from JX_Scor ...