springboot 用实体类接受参数后如果想获取完整请求数据怎么办?

2022 年 9 月 23 日
 Ufo666

在 controller 那里,如果我用一个实体类接收参数,那我日志如何获取本次请求携带的完整 body ?(例如一些错误数据,攻击的非法数据等等) 我能想到的就是直接用 JsonObject 或者 map 或者 string 来接受 。。大佬们还有其他办法吗

2293 次点击
所在节点    问与答
14 条回复
cameco
2022 年 9 月 23 日
request 怎么样
Ufo666
2022 年 9 月 23 日
@guisheng 我试过在 aop 那里拿到 request 再拿 body ,但拿出来的只有 params..我再去研究研究
ToDyZHu
2022 年 9 月 23 日
写个 aop 在里面用可以获取到接口方法的参数 是 Object[] 你怎么处理都行
wolfie
2022 年 9 月 23 日
在 filter 搞。
再看看 Http 包含哪些信息。操作 HttpServetRequest
lyhang
2022 年 9 月 23 日
HttpServletRequest
Ufo666
2022 年 9 月 23 日
request.getReader()和 request.getParameter("key") 方法读取一次,重复读取会报 java.io.IOException: Stream closed 异常
Ufo666
2022 年 9 月 23 日
框架已经读了一次了,我再读会报错
lyhang
2022 年 9 月 23 日
request.getParameterNames()
然后循环取
Ufo666
2022 年 9 月 23 日
@ToDyZHu aop 拿到的 request 是读取过的了,不能再读了
ningmengmao
2022 年 9 月 23 日
可以自定义 http message coverter ,在类型反序列化时操作
doraon
2022 年 9 月 23 日
重写 HttpRequestWrapper
v2eb
2022 年 9 月 23 日
重写的时候注意, 上传文件请求需要重写的方法不太一样, 可以直接放行
swczxf
2022 年 9 月 23 日
@Ufo666 你都知道只能读取一次了,怎么解决不就百度一下的事情吗
qinxi
2022 年 9 月 24 日
spring 已经提供好了 CommonsRequestLoggingFilter

开启一下就行

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.ih06.com/t/882471

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX