前言

本篇记入一些 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 – 大杂烩的更多相关文章

  1. ABP框架 - OData 集成

    文档目录 本节内容: 简介 安装 安装Nuget包 设置模块依赖 配置你的实体 创建控制器 示例 获取实体列表 请求 响应 获取单个实体 请求 响应 获取单个实体及导航属性 请求 响应 查询 请求 响 ...

  2. ABP源码分析三十八: ABP.Web.Api.OData

    如果对OData不熟悉的话可参考OData的初步认识一文以获取OData的一些初步知识. API.Odata 模块唯一用处就是提供了一个泛型版本的ODataController,实现了Controll ...

  3. OData Client Code Generator

    转发. [Tutorial & Sample] How to use OData Client Code Generator to generate client-side proxy cla ...

  4. Microsoft Dynamics CRM 2013 Js Odata 查询

    实现功能:   在新建记录时,(大区,省区,城市)的值默认为当前用户的值.tips:字段均为lookup类型; function Default_region(){ var fromtype=Xrm. ...

  5. 让OData和NHibernate结合进行动态查询

    OData是一个非常灵活的RESTful API,如果要做出强大的查询API,那么OData就强烈推荐了.http://www.odata.org/ OData的特点就是可以根据传入参数动态生成Ent ...

  6. Web Api系列教程第2季(OData篇)(二)——使用Web Api创建只读的OData服务

    前言 很久没更新了,之前有很多事情,所以拖了很久,非常抱歉.好了,废话不多说,下面开始正题.本篇仍然使用上一季的的项目背景(系列地址http://www.cnblogs.com/fzrain/p/34 ...

  7. ABP理论学习之OData集成(新增)

    返回总目录 本篇目录 介绍 安装 创建控制器 例子 样例项目 介绍 OData在其官网的定义是: 允许以一种 简单且标准的方式创建和使用可查询的.可互操作的RESTful APIs. 在ABP中也可以 ...

  8. OData的初步认识

    What – OData是什么? OData - Open Data Protocal,是一个设计和使用RESTful API的标准.REST本身只是一个构建web服务的思想和理念,其没有规定一个统一 ...

  9. OData V4 学习目录

    开放数据协议(Open Data Protocol,缩写OData)是一种描述如何创建和访问Restful服务的OASIS标准. Open Data Protocol (开放数据协议,OData)是用 ...

  10. OData V4 系列 Action 与 Function

    OData 学习目录 了解过WebApi的都知道,WebApi默认方法 Get.Post.Put,如果增加其它过多Post方法即不能识别,还需增加其它配制,请求的Url还需加上Controller及A ...

随机推荐

  1. 深度学习论文翻译解析(二十三):Segment Angthing

    论文标题:Segment Angthing 论文作者: Alexander Kirillov  Eric Mintun  Nikhila Ravi  Hanzi Mao... 论文地址:2304.02 ...

  2. 2. CMake 的简单使用

    2. CMake 的简单使用 我们创建一个工程目录,在里面定义一些简单的加减乘除运算,然后定义一个 main.cpp 的文件: 结构如下: tree /f .\ D:\SOURCE\CMAKE_PRO ...

  3. el-date-picker的value-forma在Element UI (Vue 2)和Element Plus (Vue 3)中的不同

    Element UI (Vue 2): <template> <el-form-item prop="register_date" label="成立日 ...

  4. MViT:性能杠杠的多尺度ViT | ICCV 2021

    论文提出了多尺度视觉Transformer模型MViT,将多尺度层级特征的基本概念与Transformer模型联系起来,在逐层扩展特征复杂度同时降低特征的分辨率.在视频识别和图像分类的任务中,MViT ...

  5. 关于IE11点击的select框需要点击两次才能展开option选择框

    需求:select是一个级联选择框,点击select框之后向后台请求,然后把请求的数据展示出来. 问题:绑定onclick或者onfocus的时候,需要点击select框两次,才能将option选择框 ...

  6. 关于elementUI的select组件回显问题

    最近接受了一个后台项目,需求是这样的,点击表单项,弹出的弹出层显示该表单项目的信息.但是回显的时候,关于弹出层中的级联显示有问题,如图: 回显结果为: 回显代码为: 弹框为: 我就不明白了,分明分公司 ...

  7. STL 算法 <algorithm>,

    STL 算法部分主要由头文件 <algorithm>,<numeric>,<functional > 组成.要使用 STL 中的算法函数必须包含头文件 < a ...

  8. UML各类基础知识总结

    1.UML关系 泛化(也就是我们传统意义上的继承关系) 子类继承父类,关系用extend关键字标识: 关联 可以说是一种属于关系,图中即说的是PhoneNumber类属于Master类,同时,除了一对 ...

  9. RHCA rh442 002 监控工具 脏页 块设备名 缓存

    sar 看某一个时间的数据 sar -d 1 5 与iostat类似 计算机识别设备按编号识别 0-15预留出 8 为iscsi设备 做一个块设备名 名字不重要是给人看的,重要的是编号 8 17(主编 ...

  10. 结合拦截器描述mybatis启动流程

    简介 mybatis的启动入口一般有两个,在结合spring框架后由spring整合包下的SqlSessionFactoryBean启动 如果没有整合spring,则有XMLConfigBuilder ...