当前位置: 首页 > news >正文

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

image

不废话,直接上正文。_

方法一

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

var reqStream = context.Request.BodyReader.AsStream();
var jsonObj = JsonSerializer.Deserialize<CheckAndParsingMiddlewareModel>(reqStream);

方法二

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

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

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

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

相关文章:

  • html+CSS部分基础运用9
  • 大数据系统架构师的论文如何写
  • 【排序算法】选择排序
  • 浅谈线性化
  • 如何修改开源项目中发现的bug?
  • 使用Spring Boot自定义注解 + AOP实现基于IP的接口限流和黑白名单
  • 【Django】开发个人博客系统【1】
  • 【LeetCode】38.外观数列
  • 第P9周:YOLOv5-Backbone模块实现
  • Leetcode刷题笔记7
  • Java集合【超详细】2 -- Map、可变参数、Collections类
  • 探索Web前端三大主流框架:Angular、React和Vue.js
  • 城市公共交通IC卡消费流程
  • Superset二次开发之更新 SECRET_KEY
  • springboot+vue 社区养老服务系统
  • Java-详解HashMap
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • SQLServer之索引简介
  • 从零开始在ubuntu上搭建node开发环境
  • 删除表内多余的重复数据
  • JavaScript 新语法详解:Class 的私有属性与私有方法 ...
  • 完善智慧办公建设,小熊U租获京东数千万元A+轮融资 ...
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • # 利刃出鞘_Tomcat 核心原理解析(八)-- Tomcat 集群
  • #进阶:轻量级ORM框架Dapper的使用教程与原理详解
  • $LayoutParams cannot be cast to android.widget.RelativeLayout$LayoutParams
  • (4)logging(日志模块)
  • (DFS + 剪枝)【洛谷P1731】 [NOI1999] 生日蛋糕
  • (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  • (多级缓存)多级缓存
  • (附源码)springboot太原学院贫困生申请管理系统 毕业设计 101517
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (力扣题库)跳跃游戏II(c++)
  • (四)库存超卖案例实战——优化redis分布式锁
  • (小白学Java)Java简介和基本配置
  • ***php进行支付宝开发中return_url和notify_url的区别分析
  • ... 是什么 ?... 有什么用处?
  • .NET Core IdentityServer4实战-开篇介绍与规划
  • .Net Core 生成管理员权限的应用程序
  • .net framework 4.8 开发windows系统服务
  • .NET I/O 学习笔记:对文件和目录进行解压缩操作
  • .net 生成二级域名
  • .NET中GET与SET的用法
  • @DataRedisTest测试redis从未如此丝滑
  • @hook扩展分析
  • @property python知乎_Python3基础之:property
  • @拔赤:Web前端开发十日谈
  • [1]-基于图搜索的路径规划基础
  • [18] Opencv_CUDA应用之 基于颜色的对象检测与跟踪
  • [20171106]配置客户端连接注意.txt
  • [2019.3.20]BZOJ4573 [Zjoi2016]大森林
  • [ACL2022] Text Smoothing: 一种在文本分类任务上的数据增强方法
  • [BZOJ1877][SDOI2009]晨跑[最大流+费用流]
  • [C++]unordered系列关联式容器
  • [Contest20180313]灵大会议