web api 2 学习笔记 (Odata ODataQueryOptions 使用)
[ODataRoutePrefix("products")]
public class ProductController : BaseController
{
[ODataRoute("")]
[EnableQuery(AllowedQueryOptions = Helper.ALLOW_QUERY | AllowedQueryOptions.Expand, MaxExpansionDepth = )]
public IHttpActionResult get(ODataQueryOptions<Product> queryOptions)
{
var url = "http://localhost:59853/api/products";
var query = S.ParseQueryString("");
query["$filter"] = "Id ge 2";
url += "?" + query.toQueryString();
var req = new HttpRequestMessage(HttpMethod.Get, url); //创建一个 请求 url + queryString
var myQueryOptions = new ODataQueryOptions(queryOptions.Context, req); 创建 ODataQueryOptions with request + EDM (这里我们使用原本的content EDM)
var queryable = myQueryOptions.ApplyTo(db.products) as IQueryable<Product>; //调用 ApplyTo,它就会对这个query进行处理然后返回一个新的query. 在controller里我们需要强转.
return Ok(queryable);
}
}
ODataQueryOptions 是让前段可以使用 $filter,$select 等来操控数据
它是配合整个请求来使用的。
上面看看我们在后台生产一个 ODataQueryOptions 的过程和使用它.
这东西不常用到。
我遇到的情况是如果要做一些权限,比如 $expand=colors , 而colors 有一些是当前用户不能访问的,那么我们可能需要增加一个filter $expand=colors($filter=OwnerId = 5) 假设当前用户 Id 是5.
也可以让 EnableQueryAttribute 在 ApplyQuery 是调用
public class MyEnableQueryAttribute : EnableQueryAttribute
{
public override IQueryable ApplyQuery(IQueryable queryable, ODataQueryOptions queryOptions)
{
//var url = "http://localhost:59853/api/products";
//var query = S.ParseQueryString("");
//query["$filter"] = "Id ge 2";
//url += "?" + query.toQueryString();
//var req = new HttpRequestMessage(HttpMethod.Get, url);
//var queryOptionsTwo = new ODataQueryOptions(queryOptions.Context, req);
//queryable = queryOptionsTwo.ApplyTo(queryable);
return queryOptions.ApplyTo(queryable);
}
}
web api 2 学习笔记 (Odata ODataQueryOptions 使用)的更多相关文章
- web api 2 学习笔记 (OData Batch request)
之前介绍过OData 中实现RPC的写法,今天在来一个批量操作. 参考 : https://damienbod.wordpress.com/2014/08/14/web-api-odata-v4-ba ...
- Rest API 开发 学习笔记(转)
Rest API 开发 学习笔记 概述 REST 从资源的角度来观察整个网络,分布在各处的资源由URI确定,而客户端的应用通过URI来获取资源的表示方式.获得这些表徵致使这些应用程序转变了其状态.随着 ...
- abp学习(四)——根据入门教程(aspnetMVC Web API进一步学习)
Introduction With AspNet MVC Web API EntityFramework and AngularJS 地址:https://aspnetboilerplate.com/ ...
- Web Api系列教程第2季(OData篇)(二)——使用Web Api创建只读的OData服务
前言 很久没更新了,之前有很多事情,所以拖了很久,非常抱歉.好了,废话不多说,下面开始正题.本篇仍然使用上一季的的项目背景(系列地址http://www.cnblogs.com/fzrain/p/34 ...
- JavaSE中线程与并行API框架学习笔记——线程为什么会不安全?
前言:休整一个多月之后,终于开始投简历了.这段时间休息了一阵子,又病了几天,真正用来复习准备的时间其实并不多.说实话,心里不是非常有底气. 这可能是学生时代遗留的思维惯性--总想着做好万全准备才去做事 ...
- [转]Web Api系列教程第2季(OData篇)(二)——使用Web Api创建只读的OData服务
本文转自:http://www.cnblogs.com/fzrain/p/3923727.html 前言 很久没更新了,之前有很多事情,所以拖了很久,非常抱歉.好了,废话不多说,下面开始正题.本篇仍然 ...
- 《ASP.NET MVC4 WEB编程》学习笔记------Web API 续
目录 ASP.NET WEB API的出现缘由 ASP.NET WEB API的强大功能 ASP.NET WEB API的出现缘由 随着UI AJAX 请求适量的增加,ASP.NET MVC基于Jso ...
- 《ASP.NET MVC4 WEB编程》学习笔记------Web API
本文截取自情缘 1. Web API简单说明 近来很多大型的平台都公开了Web API.比如百度地图 Web API,做过地图相关的人都熟悉.公开服务这种方式可以使它易于与各种各样的设备和客户端平台集 ...
- Asp.net core 学习笔记 ( OData )
2018-12-10 更新 : 从前我都是把 entity 直接用于 odata 曝露 api 给程序用. 如果这个程序是我们自己写的前端,这样的方式非常好,因为就好比前端可以直接对数据库每一个表做操 ...
随机推荐
- JVM之--Java内存结构(第一篇)
最近在和同事朋友聊天的时候,发现一个很让人思考的问题,很多人总觉得JVM将java和操作系统隔离开来,导致很多人不用熟悉操作系统,甚至不用了解JVM本身即可完全掌握Java这一门技术,其实个人的观点是 ...
- X265编译中C2220错误的解决办法
x265编译过程中 C2220错误:根本原因是代码是英文代码页,而我们的操作系统中使用的是中文代码页: 解决办法1 逐个文件进行格式转换,我在ubuntu下用iconv命令试过,没成功: 解决办法2 ...
- SKEmitterNode类
继承自 SKNode:UIResponder:NSObject 符合 NSCoding(SKNode)NSCopying(SKNode)NSObject(NSObject) 框架 /System/L ...
- JAVA ,SSH中文及其乱码问题的解决 6大配置点 使用UTF-8编码
JSP,mysql,tomcat下(基于struts2)中文及其乱码问题的解决 6大配置点 使用UTF-8编码 目前对遇到J2EE 开发中 中文及其乱码问题,参考网上资料做个总结, 主要是6大配置点: ...
- Spring MVC中使用Mongodb总结
近期项目做了次架构调整,原来是使用MySQL+GeoHash来存储LBS数据(地理位置信息),现在使用NOSQL数据库MongoDB来存储LBS数据(地理位置信息).由于项目是基于spring MVC ...
- Java基础知识强化93:算一下你来到这个世界多少天的案例
1. 分析: (1)键盘录入你的出生年月日 (2)把该字符串转换为一个日期 (3)通过该日期得到一个毫秒值 (4)获取当前时间的毫秒值 (5)用(4)-(3)得到一个毫秒值 (6)把E的毫秒值转换为天 ...
- 配置VSFTP服务器
一.Linux FTP服务器分类: <1>wu-ftp <2>proftp=profession ftp <3>vsftp=very security ftp ...
- linux lvm的操作手册_pvcreate_vgcreate_lvcreate_相关
一. 前言 每个Linux使用者在安装Linux时都会遇到这样的困境:在为系统分区时,如何精确评估和分配各个硬盘分区的容量,因为系统管理员不但要考虑到当前某 个分区需要的容量,还要预见该分区以后可能需 ...
- 源码搭建lnmp平台
lnmp平台是指利用linux操作系统,nginx服务器,mysql数据库和php语言搭建高性能web服务器,负载均衡器和邮件代理服务器. 原理图:‘
- 从JPG中获取缩略图
using System; using System.Drawing; using System.Collections; using System.ComponentModel; using Sys ...