Ufo666
V2EX  ›  问与答

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

  •  
  •   Ufo666 · Sep 23, 2022 · 1894 views
    This topic created in 1358 days ago, the information mentioned may be changed or developed.

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

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

    开启一下就行
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2811 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 64ms · UTC 14:19 · PVG 22:19 · LAX 07:19 · JFK 10:19
    ♥ Do have faith in what you're doing.