xkcoding / spring-boot-demo

🚀一个用来深入学习并实战 Spring Boot 的项目。
https://parg.co/UZM
MIT License
33.11k stars 10.89k forks source link

[BUG]AopLog日志切面获取不到POST方法Controller中的RequestBody #97

Open ChaosLCL opened 4 years ago

ChaosLCL commented 4 years ago

https://github.com/xkcoding/spring-boot-demo/tree/master/spring-boot-demo-log-aop

描述问题

我觉得这个项目很不错,然后我用了您这边的AOP切面做日志,但是我使用过程中发现下面这段代码并不能获取的Controller在接收POST请求时候的RequestBody

        Map<String, String[]> parameterMap = request.getParameterMap();
        log.info("【请求param】:{},", JSONUtil.toJsonStr(parameterMap));

然后我由尝试使用BufferedReader获取RequestBody,但是结果令人遗憾,获取到了结果,但是Controller因为request.getReader()只能被调用一次而不能执行.

然后我尝试下面这行代码,获取到了RequestBody

        if (point.getArgs().length > 0) {
            for (Object o : point.getArgs()) {
                if (o instanceof HttpServletRequest || o instanceof HttpServletResponse) {
                    continue;
                }
                log.info("【请求data】:{}," + JSON.toJSONString(o));
            }
        }
He-Pin commented 4 years ago

一般用RequestBody了,都不想在去处理 HttpServletRequest 这个了。你用PostMan测试下呢?