各位是怎么打印封装第三方 api 的出入参日志的呢 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zhongpingjing
0D
V2EX    Java

各位是怎么打印封装第三方 api 的出入参日志的呢

  •  
  •   zhongpingjing 2021-09-30 12:54:37 +08:00 2536 次点击
    这是一个创建于 1477 天前的主题,其中的信息可能已经有所发展或是发生改变。
    之前是每个封装的 http 请求的方法都手动 log.info 去打印,感觉模版代码有点多

    现在改用 RestTemplate 的拦截器机制,在拦截器里打印 request 跟 response,但是也发现有个问题,就是 response 的流被消费一次后,后面去获取 response 就会是空,通过复制一遍流(和使用 BufferingClientHttpRequestFactory )解决了。但是这样又有一个问题,这样会有性能损失,而且大 response 复制一遍会占用很多内存吧。

    想请教各位平时是怎么打印第三方 api 的出入参的
    7 条回复    2021-10-03 01:02:23 +08:00
    thetbw
        1
    thetbw  
       2021-09-30 15:52:20 +08:00
    用切片在方法上拦截,记录方法入参和返回值?
    方法上没有标注的一般也是不重要的参数吧,如果是 token 之类的参数也需要记录,可以通过线程上下文来获取
    shanghai1943
        2
    shanghai1943  
       2021-09-30 16:06:20 +08:00
    如果是出参里的 response entity 的话,可以试试 toString 后,返回 string 类型的数据,而不是返回流。
    zhongpingjing
        3
    zhongpingjing  
    OP
       2021-09-30 16:17:31 +08:00
    @shanghai1943 repsonse.getBody()就只返回流。。能返回 response entity 的话,已经走完拦截器了
    zhongpingjing
        4
    zhongpingjing  
    OP
       2021-09-30 16:18:38 +08:00
    @thetbw 切片好像没办法完全满足,有一些不在方法的参数,也不在上下文
    thetbw
        5
    thetbw  
       2021-10-01 13:57:55 +08:00
    @zhongpingjing 那你这就是框架设计的问题了呀,http 协议本来也就没什么东西,非要自己把情况搞复杂。还能用 请求头传数据的吗,请求头的数据也是可以拿到的呀
    sprite82
        6
    sprite82  
       2021-10-01 14:24:02 +08:00 via Android
    自己封装一个 httpclientutil,也就 get post,表单 json 两种入参,没几个方法,然后都用这 util 打印
    zhongpingjing
        7
    zhongpingjing  
    OP
       2021-10-03 01:02:23 +08:00
    @thetbw request 还好,主要是 response
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3553 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 10:27 PVG 18:27 LAX 03:27 JFK 06:27
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86