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,接着后续就接回原本的流程处理了。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 推荐几款开源且免费的 .NET MAUI 组件库
· 实操Deepseek接入个人知识库
· 易语言 —— 开山篇
· 【全网最全教程】使用最强DeepSeekR1+联网的火山引擎,没有生成长度限制,DeepSeek本体
2022-08-05 Google Ads – UTM
2021-08-05 人脸识别 face detect & recognize
2021-08-05 face-api.js 学习笔记
2018-08-05 Asp.net core 学习笔记 (Excel 读写)