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,接着后续就接回原本的流程处理了。

 

 

  

 

posted @   兴杰  阅读(38)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 清华大学推出第四讲使用 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 读写)
点击右上角即可分享
微信分享提示