OData介绍:是一个查询和更新数据的Web协议。OData应用了web技术如HTTP、Atom发布协议(AtomPub)和JSON等来提供对不同应用程序,服务 和存储的信息访问。除了提供一些基本的操作(像增删改查),也提供了一些高级的操作类似过滤数据和实体的导航。OData扩展了上述的协议但是不是取代他 们。他可以被XML(ATOM)或者JSON取代但是OData的重要在于它符合REST原则。在某种意义上,它建立在'简单'的REST HTTP 服务上,并且有着清晰的目标——简化和标准化我们操作和查询数据的方式。如果你过去在给你的REST服务创建搜索、过滤、或者分页API的时候感觉很麻 烦,那么OData将是一个不错的选择。

OData好处:通过OData,我们采取不同的方法。取代创建客户端签名和参数,我们问了如下的问题:“如果你将数据集作为源处理,并为最频繁使用的操作定义模式,像查 询、分页、排序、新建、删除和更新,服务接口因该是什么样子的?” 这也就导致OData的创建。OData解决了上面提到的关键服务设计挑战。

由于Visual Studio 2012里面的 AspNet WebApi 2 OData   中的 AspNet WebApi Client 5.0 依赖于 .Net Framework 4.5 框架,

所以只能去下载,.Net Framework 4.0 版本的 AspNet WebApi OData

AspNet WebApi OData 版本下载地址:http://www.nuget.org/packages/Microsoft.AspNet.WebApi.OData.zh-Hans/4.0.30506

程序包管理器,去安装:

PM> Install-Package Microsoft.AspNet.WebApi.OData -Version 4.0.30506

$filter 用法:

Return all products with category equal to “Toys”. http://localhost/Products?$filter=Category eq 'Toys'
Return all products with price less than 10. http://localhost/Products?$filter=Price lt 10
Logical operators: Return all products where price >= 5 and price <= 15. http://localhost/Products?$filter=Price ge 5 and Price le 15
String functions: Return all products with “zz” in the name. http://localhost/Products?$filter=substringof('zz',Name)
Date functions: Return all products with ReleaseDate after 2005. http://localhost/Products?$filter=year(ReleaseDate) gt 2005

$orderby 用法:

Sort by price. http://localhost/Products?$orderby=Price
Sort by price in descending order (highest to lowest). http://localhost/Products?$orderby=Price desc
Sort by category, then sort by price in descending order within categories. http://localhost/odata/Products?$orderby=Category,Price desc

PageSize  用法:

[Queryable(PageSize=10)]
public IQueryable<Product> Get()
{return products.AsQueryable();
}

客户端点击链接筛选到下一页,为了让客户端得到页码,我们必须求出结果集,这个客户端可以使用$inlinecount的一个叫“allpages”的参数,来得到总条数。
http://localhost/Products?$inlinecount=allpages这个“allpages”值,就是服务端包含结果集的总数,响应告诉给客户端:{ "odata.metadata":"http://localhost/$metadata#Products","odata.count":"50","value":[{ "ID":1,"Name":"Hat","Price":"15","Category":"Apparel" },{ "ID":2,"Name":"Socks","Price":"5","Category":"Apparel" },
  ]
}
//此方法,是用来处理分页数据查询,过滤,我们可以很方便灵活的去在客户端做处理。
public PageResult<Product> Get(ODataQueryOptions<Product> options)
{ODataQuerySettings settings = new ODataQuerySettings(){PageSize = 5};IQueryable results = options.ApplyTo(_products.AsQueryable(), settings);return new PageResult<Product>(results as IEnumerable<Product>, Request.GetNextPageLink(), Request.GetInlineCount());
}

这里是一个返回Json的例子:

{

  "Items": [{"ID":1,"Name":"Hat","Price":"15","Category":"Apparel"},

          {"ID":2,"Name":"Socks","Price":"5","Category":"Apparel"},// Others not shown],"NextPageLink" :"http://localhost/api/values?$inlinecount=allpages&$skip=10","Count": 50}
 

博客参考学习地址:

http://www.cnblogs.com/cube/p/3484115.html

http://www.cnblogs.com/shanyou/archive/2013/06/11/3131583.html

http://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api/supporting-odata-query-options

转载于:https://www.cnblogs.com/Kummy/p/3486097.html

AspNet WebApi OData 学习相关推荐

  1. AspNet.WebAPI.OData.ODataPQ实现WebAPI的分页查询服务-(个人拙笔)

    AspNet.WebAPI.OData.ODataPQ 这是针对 Asp.net WebAPI OData 协议下,查询分页.或者是说 本人在使用Asp.Net webAPI 做服务接口时写的一个分页 ...

  2. 【转】OData – the best way to REST–实例讲解ASP.NET WebAPI OData (V4) Service Client

    一.概念介绍 1.1,什么是OData? 还是看OData官网的简单说明: An open protocol to allow the creation and consumption of quer ...

  3. [HTML CSS JS ES6 JS WebAPI JQuery]学习笔记目录

    文章目录 前言 HTML HTML 知识整理与补充 CSS CSS 知识整理与补充 JS ES6 JS Web API JQuery JS 知识整理与补充 前言 根据视频和PPT整理 视频及对应资料: ...

  4. WebApi实现验证授权Token,WebApi生成文档等

    using System; using System.Linq; using System.Web; using System.Web.Http; using System.Web.Security; ...

  5. WebApi实现验证授权Token,WebApi生成文档等 - CSDN博客

    原文:WebApi实现验证授权Token,WebApi生成文档等 - CSDN博客 [csharp] view plain copy print? using System; using System ...

  6. [水煮 ASP.NET Web API2 方法论](12-1)创建 OData

    问题 怎样用在 Web API 中创建 OData 服务. 解决方案 对于我们来说,在 Web API 中使用 OData最简单的方式就是使用 ASP.NET 模板来创建Odata Controlle ...

  7. 【MVC】ASP.Net MVC 4项目升级MVC 5的方法

    1.备份你的项目 2.从Web API升级到Web API 2,修改global.asax,将 ? 1 WebApiConfig.Register(GlobalConfiguration.Config ...

  8. 【MVC4升级到MVC5】ASP.Net MVC 4项目升级MVC 5的方法

    1.备份你的项目 2.从Web API升级到Web API 2,修改global.asax,将 ? 1 WebApiConfig.Register(GlobalConfiguration.Config ...

  9. [转]Supporting OData Query Options in ASP.NET Web API 2

    本文转自:https://docs.microsoft.com/en-us/aspnet/web-api/overview/odata-support-in-aspnet-web-api/suppor ...

  10. 跨域学习笔记2--WebApi 跨域问题解决方案:CORS

    自己并不懂,在此先记录下来,留待以后学习... 正文 前言:上篇总结了下WebApi的接口测试工具的使用,这篇接着来看看WebAPI的另一个常见问题:跨域问题.本篇主要从实例的角度分享下CORS解决跨 ...

最新文章

  1. Observables简介以及它们与Promise有何不同
  2. python:程序猿的方式在元宵佳节之际,带你设计【东方明珠】动画浪漫烟花秀(python编程利用Tkinter+PIL库)
  3. Java中使用Jedis连接池连接Redis数据库流程
  4. 微信小程序想要最短服务路径
  5. 是男人就过 8 题--Pony.AI 题 - A String Game
  6. proc编译手册_Expect 手册 中文版
  7. 编程语言-Python-GUI
  8. 在同个工程中使用 Swift 和 Objective-C(Swift 2.0更新)-b
  9. Protues仿真 8X8 LED点阵
  10. 什么是CIF/4CIF/QCIF/D1
  11. 计算机系统机构中的八个伟大思想
  12. matlab zn整定,matlab里用ZN整定公式对系统进行PI、PID校正,程序问题,急!!
  13. IBM阿蒙克公司已经与纪念斯隆-凯特琳癌症中心合作,用“沃森”来帮助癌症治疗
  14. 26个大小写字母对应的哈希值
  15. win10计算机屏幕暗怎么办,win10屏幕调到最亮还是很暗怎么办
  16. matlab实现A律13折线的编码和译码以及量化误差的计算
  17. rx6800s什么水平N卡 rx6800s什么水平
  18. 不求星光灿烂,但愿岁月静好
  19. STM32-F407入门学习专题(九) STM32外设之ADC
  20. 计算机开机太慢了,电脑开机速度慢怎么办?3分钟加快电脑开机速度

热门文章

  1. 【路径规划】基于matlab A_star算法机器人栅格地图路径规划【含Matlab源码 116期】
  2. 程序设计导引及在线实践_四金一银!西电在计算机系统与程序设计竞赛再创佳绩...
  3. linux perl 执行java,如何从Java调用Perl?
  4. 16/32/64位平台下char、short、int、long、指针等类型分别占多少字节,操作系统可以使用的最大内存空间为多大?
  5. JAVA动态绑定浅析
  6. git提交及打标签(tag)流程
  7. 6-6-树的孩子链表(带双亲)存储表示法-树和二叉树-第6章-《数据结构》课本源码-严蔚敏吴伟民版...
  8. [转]Java中的随机数生成器:Random,ThreadLocalRandom,SecureRandom
  9. erlang使用leveldb
  10. eclipse 3.x中热部署WEB程序TOMCAT配置