博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
让Asp.Net WebAPI支持OData查询,排序,过滤。(转)
阅读量:6907 次
发布时间:2019-06-27

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

出处:http://www.cnblogs.com/liuzhendong/p/4233380.html

让Asp.Net WebAPI支持OData后,就能支持在url中直接输入排序,过滤条件了。

一.创建Asp.Net WebAPI项目:

 

二.使用NuGet安装Asp.Net WebAPI 2.2和OData包

 

三.修改WebAPIConfig.cs:

using System;using System.Collections.Generic;using System.Linq;using System.Web.Http;using System.Net.Http.Formatting;using System.Net.Configuration;namespace ProjectManagementWebAppV3{    public static class WebApiConfig    {        public static void Register(HttpConfiguration config)        {            // Web API configuration and services            // Web API routes            config.MapHttpAttributeRoutes();            config.Routes.MapHttpRoute(                name: "DefaultApi",                routeTemplate: "api/{controller}/{id}",                defaults: new { id = RouteParameter.Optional }            );            config.Formatters.JsonFormatter.AddQueryStringMapping("$format", "json", "application/json");             config.Formatters.XmlFormatter.AddQueryStringMapping("$format", "xml", "application/xml");            config.EnableQuerySupport();        }    }}

主要添加红色粗体字:config.EnableQuerySupport(); 

这是存在于System.Web.Http.OData.dll里的一个静态扩展方法,表示在项目中启用OData查询。

 

四.修改ProjectManagementControler.cs:

using System;using System.Collections.Generic;using System.Linq;using System.Net;using System.Net.Http;using System.Web.Http;using ProjectManagementWebAppV3.Models;using System.Web.Http.OData.Query;using ProjectManagementWebAppV3.Utility;using System.Data;using System.Data.SqlClient;using System.Configuration;namespace ProjectManagementWebAppV3.Controllers{    public class ProjectManagentController : ApiController    {        private static List
projectList = null; static ProjectManagentController() { projectList = new List
{ new ProjectModel { id=1, ProjectName = "项目1", MileStones = "2013年1月开始,3月组装测试,6月功能测试,10月上线;" }, new ProjectModel { id=2, ProjectName = "项目2", MileStones = "2013年3月开始,6月组装测试,9月功能测试,12月上线;" }, new ProjectModel { id=3, ProjectName = "项目3", MileStones = "2013年7月开始,9月组装测试,11月功能测试,12月上线;" } }; } ///
/// 获取全部数据 /// ///
[Queryable(AllowedQueryOptions = AllowedQueryOptions.All)] public List
Get() { return projectList; } }}

 主要在Get方法上增加红色粗体字的属性:[Queryable(AllowedQueryOptions = AllowedQueryOptions.All)]

 从下表可以看到,AllowedQueryOptions枚举支持的操作符号列表:

public enum AllowedQueryOptions    {        None = 0,        Filter = 1,        Expand = 2,        Select = 4,        OrderBy = 8,        Top = 16,        Skip = 32,        InlineCount = 64,        Supported = 127,        Format = 128,        SkipToken = 256,        All = 511,    }

 

五.运行示例:

 lt 10&$orderby=id desc

表示返回id小于10,并按id倒序的前2条数据。

这看起来并不难,但好处是,它们都不需要写任何代码,也不用写存储过程,不用写任何一个特别的逻辑去支持这些功能,全部都由OData框架来提供的。

也就是说,用了OData,为搜索、过滤、分页的时候提供了一个很省事的选项。

 

六.代码下载:

packages和bin目录太大无法上传,只把项目代码打了个包。

 

你可能感兴趣的文章
更新日志 - BugHD Android 客户端上线
查看>>
JavaScript Date.parse 的小坑
查看>>
菜鸟战略投资易流科技,加快建设国家智能物流骨干网
查看>>
约三分之二的 DDoS 攻击指向通信服务提供商
查看>>
Linux命令行安装weblogic
查看>>
[雪峰磁针石博客]python库介绍-图像处理工具pillow中文文档-手册(2018 5.*)
查看>>
Android Studio添加第三方库
查看>>
python:函数的高级特性
查看>>
iptsbles系列一
查看>>
Ubuntu 16.04系统开机紫屏的解决办法
查看>>
《Java8实战》-第五章读书笔记(使用流Stream-02)
查看>>
安卓运动圆环自定义View
查看>>
启用 Spring Data JPA 审计功能
查看>>
@ConditionalOnMissingBean注解使用
查看>>
初识 JSP---(Session机制)
查看>>
白屏化背后,DBA应有的数据库自动化建设思路
查看>>
【MySQL疑难杂症】如何将树形结构存储在数据库中(方案一 Adjacency List)
查看>>
净流入率第一!工程师最爱一路向“杭”
查看>>
vs2010中工具箱不显示DevExpress控件的解决办法
查看>>
SSM-SpringMVC-09:SpringMVC中以继承MutiActionController类的方式实现处理器
查看>>