Contact Manager Web API 示例[3] 分页和查询(Paging and Querying)

联系人管理器web API是一个Asp.net web api示例程序,演示了通过ASP.NET Web API 公开联系信息,并允许您添加和删除联系人,示例地址http://code.msdn.microsoft.com/Contact-Manager-Web-API-0e8e373d

Contact Manager Web API 示例[1]CRUD 操作 已经做了一个基本的介绍,

Contact Manager Web API 示例[2] Web API Routing 介绍Web API Routing。

本文主要介绍OData的查询和分页支持。

OData开放数据协议是微软针对Google的GData推出的,旨在推广Web程序数据库格式标准化的开放数据协议,微软将 OData 定义为基于 HTTP、AtomPub 和 JSON 的协议,增强各种网页应用程序之间的数据兼容性,以提供多种应用、服务和数据商店的信息访问。

Open Data Protocal (OData) 指定查询字符串参数让 Client 能使用它去排序与过滤结果。 Web API 提供以下支持 OData 查询参数:

Web API 提供支持 OData 查询参数

查询参数

说明

范例

$filter

选择与布尔表达式相符的项目

http://localhost:port/api/contacts?$filter=substringof(Name, 'Ed') eq true

$orderby

指定的属性来排序结果

http://localhost:port/api/contacts?$orderby=Name

$skip

跳过前 n 笔元素

http://localhost:port/api/contacts?$skip=2

$top

传回前 n 笔元素

http://localhost:port/api/contacts?$orderby=Name

$top 如果与 $orderby 一起使用,会先排序,然后再取得前 n 笔元素以返回。

例如,以下的 URI 会回传前 3 笔联系人数据,而且使用 name 排序过。 http://localhost:port/api/contacts?$top=3&orderby=name 要支持这些查询选项,简单的从 GET 方法中回去 IQueryable 类型和Queryable attribute (System.Web.Http.QueryableAttribute).

。例如我们把

[Queryable(ResultLimit=20)]
public IQueryable<Contact> Get()    
{     
          return this.repository.GetAll().AsQueryable();     
}

只需要通过 .AsQueryable() 的帮忙,即可帮我们转换。 更多 OData 查询字符串参数信息,请查询 OData: URI Conventions

参考数据

· Paging and Querying

· http://www.odata.org/

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏『不羁阁』 | 行走少年郎专栏

iOS多线程:『pthread、NSThread』详尽总结

22350
来自专栏hotqin888的专栏

DOC文件中法规对标系统完成

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hotqin888/article/det...

8110
来自专栏圣杰的专栏

Asp.net mvc 知多少(二)

本系列主要翻译自《ASP.NET MVC Interview Questions and Answers 》- By Shailendra Chauhan,想...

22480
来自专栏me的随笔

.NET Core中的包、元包与框架

.NET Core是一个由NuGet包组成的平台。一些产品受益于细粒度包的定义,也有一些受益于粗粒度包的定义。为了适应这种二重性,.NET Core平台被分为一...

12940
来自专栏有趣的django

Django+Bootstrap+Mysql 搭建个人博客 (六)

85320
来自专栏智能大石头

改进版CodeTimer及XCode性能测试

在测试XCode性能的时候,发现每次执行测试程序得到的执行时间差距实在太大,于是采用了老赵的CodeTimer来计算线程时间,后来因为测试程序稍微有点复杂,在使...

32670
来自专栏微信公众号:Java团长

Java 8 Streams 中的数据库 CRUD 操作

接触一个新工具的时候,刚开始要克服的最大障碍就是如何让你自己先尝试做出一个小东西来。现在你也许对 Java 8 中新的 Stream API 的运作方式在理解上...

13020
来自专栏高性能服务器开发

关于windows完成端口(IOCP)的一些理解(一)

系列目录 关于windows完成端口(IOCP)的一些理解(一) 关于windows完成端口(IOCP)的一些理解(二) 关于windows完成端口(IOCP)...

1K90
来自专栏木宛城主

ASP.NET MVC 随想录—— 使用ASP.NET Identity实现基于声明的授权,高级篇

在这篇文章中,我将继续ASP.NET Identity 之旅,这也是ASP.NET Identity 三部曲的最后一篇。在本文中,将为大家介绍ASP.NET ...

24680
来自专栏逍遥剑客的游戏开发

C#脚本实践(二): Unity脚本机制分析

22720

扫码关注云+社区

领取腾讯云代金券