分享 ASP.NET Core Web Api 中间件获取 Request Body 两个方法

不废话,直接上正文。_

方法一

思路:利用 BodyReader 直接读取 HttpContext 的 Request Body,再反序列化

c# 复制代码
var reqStream = context.Request.BodyReader.AsStream();
var jsonObj = JsonSerializer.Deserialize<CheckAndParsingMiddlewareModel>(reqStream);

方法二

思路:传统方式,将 HttpContext 的 Request Body 转成字符串,再反序列化

c# 复制代码
Stream reqStream = context.Request.Body;
byte[] buffer = new byte[context.Request.ContentLength!.Value];
await reqStream.ReadAsync(buffer, 0, buffer.Length);
var reqStr = Encoding.UTF8.GetString(buffer);
var jsonObj = JsonSerializer.Deserialize<CheckAndParsingMiddlewareModel>(reqStr)!;

总结:

  1. 以上两种写法都可以,第一种更简洁,第二种更灵活
  2. JsonSerializer.Deserialize 不支持序列化为 dynamic 类型,需要创建一个实体类

Step By Step 实例

Step By Step 实例可参考前文 《聊聊 ASP.NET Core 中间件(三):如何创建自己的中间件?

我是老杨,一个奋斗在一线的资深研发老鸟,让我们一起聊聊技术,聊聊人生。

都看到这了,求个点赞、关注、在看三连呗,感谢支持。

相关推荐
爱吃苹果的日记本4 小时前
数据结构第一课
c语言·数据结构·数据库·学习·c#
唐青枫6 小时前
C#.NET PInvoke 深入解析:封送、内存布局与原生互操作实战
c#·.net
总是幸福的老豌豆7 小时前
EmbCom · 具身智能传输中间件
中间件
软件黑马王子9 小时前
24.Editor 资源加载:主要作用和基本原理
开发语言·前端框架·c#
慧都小妮子9 小时前
用 Python 批量把 PDF 参考文献排成 MLA 格式:Spire.Doc for Python 实战
python·pdf·c#·spire.doc·mla格式·参考文献排版·pdf批量处理
UIU11413 小时前
补码运算与整数溢出(上
学习·c#·补码·补码运算
曹牧14 小时前
C#:模态对话框
开发语言·c#
咕白m62515 小时前
C# 如何限制 PDF 复制、打印权限?
c#·.net
2401_8685347815 小时前
第十章 网络规划设计
安全·中间件
yume_sibai15 小时前
正则表达式完全指南(基础语法 + 实战应用 + 性能优化 + 最佳实践)
开发语言·正则表达式·c#