分享 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 中间件(三):如何创建自己的中间件?

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

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

相关推荐
数据的世界0120 小时前
C#4.0权威指南第12章:接口
开发语言·c#
c#上位机1 天前
C#读取保存图像踩坑之FileStream类
开发语言·c#
fantasy5_51 天前
从零手写线程池:把多线程、锁、同步、日志讲透
开发语言·c++·中间件
manyikaimen1 天前
博派智能-运动控制技术-RTCP-五轴联动
c++·图像处理·qt·算法·计算机视觉·机器人·c#
heimeiyingwang1 天前
【架构实战】海量数据存储:分库分表中间件实战
中间件·架构
别抢我的锅包肉1 天前
【FastAPI】 依赖注入 + 中间件详解
中间件·fastapi
敢敢のwings1 天前
ROS2通信中间件深度解析:从DDS到下一代传输架构整理
中间件·架构
理人综艺好会1 天前
路由中间件快速了解(Gin版)
中间件·gin
武藤一雄2 天前
C# 异步回调与等待机制
前端·microsoft·设计模式·微软·c#·.netcore
乱蜂朝王2 天前
使用 C# 和 ONNX Runtime 部署 PaDiM 异常检测模型
开发语言·c#