架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 9258|回复: 1

[资料] Spring Cloud Filter 通过 ContentCachingRequestWrapper 获取请求内容

[复制链接]
发表于 2021-8-9 14:18:46 | 显示全部楼层 |阅读模式
需求:将接口的请求内容记录到日志中,记录内容这里指的是 POST、PUT、Delete 等方式提交的内容,内容可以是表单或则 json 字符串。

有一定经验的都知道,如果我们在Filter中读取了HttpServletRequest或者HttpServletResponse的流,就没有办法再次读取了,这样就会造成请求异常。所以,我们需要借助 Spring 提供的ContentCachingRequestWrapper和ContentCachingRequestWrapper实现数据流的重复读取。
先看效果图,如下:

QQ截图20210809141347.jpg

判断请求是否包含请求内容信息,代码如下(排除了“multipart/form-data”文件提交):

获取请求的内容信息:

过滤器代码:


注意:调用 chain.doFilter 方法后,才能获取到请求的内容,原理是在控制器获取 InputStream 的时候,ContentCachingRequestWrapper 会将内容缓存到一个变量里面。

https://gist.github.com/calo81/2071634
https://coderanch.com/t/364591/java/read-request-body-filter


(完)




上一篇:【实战】CentOS 7 安装 mongodb 5.0.1 教程
下一篇:Maven updatePolicy 快照更新策略
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2021-8-9 14:27:30 | 显示全部楼层
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2024-4-19 17:32

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表