V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Ufo666
V2EX  ›  问与答

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

  •  
  •   Ufo666 · 2022-09-23 17:48:15 +08:00 · 1079 次点击
    这是一个创建于 777 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    14 条回复    2022-09-24 15:08:33 +08:00
    guisheng
        1
    guisheng  
       2022-09-23 17:51:12 +08:00 via iPhone
    request 怎么样
    Ufo666
        2
    Ufo666  
    OP
       2022-09-23 17:55:26 +08:00
    @guisheng 我试过在 aop 那里拿到 request 再拿 body ,但拿出来的只有 params..我再去研究研究
    ToDyZHu
        3
    ToDyZHu  
       2022-09-23 17:56:26 +08:00
    写个 aop 在里面用可以获取到接口方法的参数 是 Object[] 你怎么处理都行
    wolfie
        4
    wolfie  
       2022-09-23 18:00:08 +08:00
    在 filter 搞。
    再看看 Http 包含哪些信息。操作 HttpServetRequest
    lyhang
        5
    lyhang  
       2022-09-23 18:02:18 +08:00
    HttpServletRequest
    Ufo666
        6
    Ufo666  
    OP
       2022-09-23 18:02:29 +08:00
    request.getReader()和 request.getParameter("key") 方法读取一次,重复读取会报 java.io.IOException: Stream closed 异常
    Ufo666
        7
    Ufo666  
    OP
       2022-09-23 18:03:05 +08:00
    框架已经读了一次了,我再读会报错
    lyhang
        8
    lyhang  
       2022-09-23 18:04:57 +08:00
    request.getParameterNames()
    然后循环取
    Ufo666
        9
    Ufo666  
    OP
       2022-09-23 18:09:01 +08:00
    @ToDyZHu aop 拿到的 request 是读取过的了,不能再读了
    ningmengmao
        10
    ningmengmao  
       2022-09-23 18:46:35 +08:00 via Android
    可以自定义 http message coverter ,在类型反序列化时操作
    doraon
        11
    doraon  
       2022-09-23 18:58:22 +08:00
    重写 HttpRequestWrapper
    v2eb
        12
    v2eb  
       2022-09-23 19:03:25 +08:00 via Android
    重写的时候注意, 上传文件请求需要重写的方法不太一样, 可以直接放行
    swczxf
        13
    swczxf  
       2022-09-23 19:20:02 +08:00 via iPhone
    @Ufo666 你都知道只能读取一次了,怎么解决不就百度一下的事情吗
    qinxi
        14
    qinxi  
       2022-09-24 15:08:33 +08:00
    spring 已经提供好了 CommonsRequestLoggingFilter

    开启一下就行
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2785 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 13:52 · PVG 21:52 · LAX 05:52 · JFK 08:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.