spring-boot-demo icon indicating copy to clipboard operation
spring-boot-demo copied to clipboard

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

Open ChaosLCL opened this issue 5 years ago • 1 comments
trafficstars

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));
			}
		}

ChaosLCL avatar Jan 20 '20 07:01 ChaosLCL

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

He-Pin avatar Mar 10 '20 08:03 He-Pin