博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
AspNet WebApi OData 学习
阅读量:6820 次
发布时间:2019-06-26

本文共 2924 字,大约阅读时间需要 9 分钟。

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 版本下载地址:

程序包管理器,去安装:

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
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
Get(ODataQueryOptions
options){ ODataQuerySettings settings = new ODataQuerySettings() { PageSize = 5 }; IQueryable results = options.ApplyTo(_products.AsQueryable(), settings); return new PageResult
( results as IEnumerable
, 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 }
 

 

博客参考学习地址:

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

你可能感兴趣的文章
[翻译svg教程]svg中的circle元素
查看>>
[转]Web Api系列教程第2季(OData篇)(二)——使用Web Api创建只读的OData服务
查看>>
linux内核段属性机制【转】
查看>>
eclipse设置系统字体
查看>>
seq命令
查看>>
微信小程序录音实现
查看>>
remove namespace from xml config file
查看>>
<转>从SRCNN到EDSR,总结深度学习端到端超分辨率方法发展历程
查看>>
excel 获取中文拼音首字母
查看>>
Eclipse 使用maven创建Dynamic Web Project
查看>>
Python学习笔记——迭代器(RandSeq和AnyIter)
查看>>
MySQL索引使用方法和性能优化
查看>>
JSP简单练习-定时刷新页面
查看>>
JSON.parse()与JSON.stringify()的区别
查看>>
[Python] Boolean Or "Mask" Index Arrays filter with numpy
查看>>
有了#ifdef 为什么还需要#if defined
查看>>
eclipse中.properties文件不能输入中文的解决办法
查看>>
[Unit Testing] Mock a Node module's dependencies using Proxyquire
查看>>
C++中malloc/free和new/delete 的使用
查看>>
ASP.NET MVC读取XML并使用ViewData显示
查看>>