OData – 大杂烩
前言
本篇记入一些 OData 的小东西。
Query string too long
OData 使用 GET 请求,然后搭配 query string $filter, $select, $expand 等等。
这就有一个问题了。假如 $filter, $select 非常非常长会出问题吗?
通常是不会遇到问题的。参考:Stack Overflow – What is the maximum possible length of a query string?
现代游览器和服务器都能处理很长的 query string,但也有人主张 GET 请求的 query string 尽量不要太长 (for security reason)。
无论如何,假如我们真的遇到人游览器或者服务器的限制,那还是得要有应对方法。
$query
OData 有一个 $query 的规范,简单说就是用 POST 代替 GET。
参考:Docs – Passing OData query options in request body
原本的 request URI 长这样
GET https://localhost:44300/api/products?$select=id&$filter=id eq 3
把它改成
POST https://localhost:44300/api/products/$query Content-Type: text/plain body: $select=id&$filter=id eq 3
把 query string 放到 body 里就可以了。
program.cs 需要加上这两句

Controller 则不需要换。
它的原理很简单,做一个 middle 拦截 request 然后把 POST 换回 GET,接着后续就接回原本的流程处理了。
OData – 大杂烩的更多相关文章
- ABP框架 - OData 集成
文档目录 本节内容: 简介 安装 安装Nuget包 设置模块依赖 配置你的实体 创建控制器 示例 获取实体列表 请求 响应 获取单个实体 请求 响应 获取单个实体及导航属性 请求 响应 查询 请求 响 ...
- ABP源码分析三十八: ABP.Web.Api.OData
如果对OData不熟悉的话可参考OData的初步认识一文以获取OData的一些初步知识. API.Odata 模块唯一用处就是提供了一个泛型版本的ODataController,实现了Controll ...
- OData Client Code Generator
转发. [Tutorial & Sample] How to use OData Client Code Generator to generate client-side proxy cla ...
- Microsoft Dynamics CRM 2013 Js Odata 查询
实现功能: 在新建记录时,(大区,省区,城市)的值默认为当前用户的值.tips:字段均为lookup类型; function Default_region(){ var fromtype=Xrm. ...
- 让OData和NHibernate结合进行动态查询
OData是一个非常灵活的RESTful API,如果要做出强大的查询API,那么OData就强烈推荐了.http://www.odata.org/ OData的特点就是可以根据传入参数动态生成Ent ...
- Web Api系列教程第2季(OData篇)(二)——使用Web Api创建只读的OData服务
前言 很久没更新了,之前有很多事情,所以拖了很久,非常抱歉.好了,废话不多说,下面开始正题.本篇仍然使用上一季的的项目背景(系列地址http://www.cnblogs.com/fzrain/p/34 ...
- ABP理论学习之OData集成(新增)
返回总目录 本篇目录 介绍 安装 创建控制器 例子 样例项目 介绍 OData在其官网的定义是: 允许以一种 简单且标准的方式创建和使用可查询的.可互操作的RESTful APIs. 在ABP中也可以 ...
- OData的初步认识
What – OData是什么? OData - Open Data Protocal,是一个设计和使用RESTful API的标准.REST本身只是一个构建web服务的思想和理念,其没有规定一个统一 ...
- OData V4 学习目录
开放数据协议(Open Data Protocol,缩写OData)是一种描述如何创建和访问Restful服务的OASIS标准. Open Data Protocol (开放数据协议,OData)是用 ...
- OData V4 系列 Action 与 Function
OData 学习目录 了解过WebApi的都知道,WebApi默认方法 Get.Post.Put,如果增加其它过多Post方法即不能识别,还需增加其它配制,请求的Url还需加上Controller及A ...
随机推荐
- 国产开源存储之光:Curve 通过信创认证
网易数帆喜讯再传,Curve 近日通过信息技术应用创新(信创)认证! Curve 是一款高性能.易运维.云原生的分布式存储系统,由网易数帆存储团队发起开源,现为 CNCF 沙箱项目.国家工业信息安全发 ...
- [oeasy]python0037_电传打字机_打印头_print_head_carriage_词源
换行回车 回忆上次内容 上次我们 diy了 自己的小动物 还可以 让小动物 变色.报时 还可以 说些话 这很亚文化 很酷炫的亚文化 不是吗? 回忆一下 最开始 研究报时 的 时候 回到 本行行头 的 ...
- SQL Server 图解备份(完全备份、差异备份、增量备份)和还原
常用的数据备份方式有完全备份.差异备份以及增量备份,那么这三种备份方式有什么区别,在具体应用中又该如何选择呢? 1.三种备份方式 完全备份(Full Backup):备份全部选中的文件夹,并不依赖文件 ...
- OpenStack 基本命令
keystone source /etc/keystone/admin-openrc.sh #登录 openstack user create --password ps1234 --email hq ...
- ceph 003 对osd操作 对存储池操作 存储池配额 存储池快照 pgp
主机被加入集群时,会自动被分配角色以达到集群的默认状态.(mon,mgr之类) 想要超过默认状态可以进行设置 ceph容器与客户端 ceph集群的客户端 需要 ceph-common 软件包 ceph ...
- python面向对象:继承
python面向对象:继承super()的用 super()的用法 一: class A: def __init__(self): self.a = '这是一个属性' def add(self, x) ...
- web3 产品介绍: walletconnect 连接Web3 DApps与用户的移动加密钱包
WalletConnect是一种去中心化的开源协议,旨在连接Web3 DApps与用户的移动加密钱包,提供更安全.更便捷的加密货币交易体验.在本文中,我们将介绍WalletConnect的主要特点.工 ...
- 【Java】Springboot 响应外切 实现数据脱敏
实现效果: 1.脱敏注解在模型类进行标记 package cn.cloud9.server.test.model; import cn.cloud9.server.struct.masking.ann ...
- 【RabbitMQ】08 深入部分P1 可靠性投递
1.消息投递确认 这里的代码延用了06的东西: https://www.cnblogs.com/mindzone/p/15374684.html 删除之前的整合案例,重新写了一份案例的队列和交换机配置 ...
- 【Hibernate】Re08 加载策略配置
一.关联查询的问题: 使用关联查询,例如简单的一对多关系查询,查出一个部门对象和对应的N个员工对象. 如果一般情况下,我们只是需要部门对象,并不关系关联的员工对象,那么Hibernate关联查询出来的 ...