diff --git a/mallinkBApi/src/main/java/com/iformall/interceptor/TestControllerReturnAspect.java b/mallinkBApi/src/main/java/com/iformall/interceptor/TestControllerReturnAspect.java new file mode 100644 index 000000000..19c7f6a76 --- /dev/null +++ b/mallinkBApi/src/main/java/com/iformall/interceptor/TestControllerReturnAspect.java @@ -0,0 +1,68 @@ +package com.iformall.interceptor; + +import com.alibaba.fastjson.JSON; +import lombok.extern.slf4j.Slf4j; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Pointcut; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.context.request.RequestAttributes; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.servlet.http.HttpServletRequest; +import java.io.BufferedReader; +import java.io.IOException; + + +/** + * 测试所有controler请求返回信息输出 + * @author alascor + * + */ +@Aspect +@Configuration +@Slf4j +public class TestControllerReturnAspect { + + + @Pointcut("execution(* com.iformall.controller.*Controller.*(..))") + public void excudeService() { + } + + @Around("excudeService()") + public Object doAround(ProceedingJoinPoint pjp) throws Throwable { + RequestAttributes ra = RequestContextHolder.getRequestAttributes(); + ServletRequestAttributes sra = (ServletRequestAttributes) ra; + HttpServletRequest request = sra.getRequest(); + + String method = request.getMethod(); + String uri = request.getRequestURI(); + String paraString = JSON.toJSONString(request.getParameterMap()); + String requestBody = getBodyRequest(request); + //log.info("***************************************************"); + //log.info("请求开始, URI: {}, method: {}, params: {}", uri, method, paraString); + + // result的值就是被拦截方法的返回值 + Object result = pjp.proceed(); + log.info("开发调试请求结果日志,生产请关闭!!!!>>>>>>>>请求结束,URI: {}, method: {}, params: {},requestBody:{}. 返回值:{} " ,uri, method, paraString,requestBody, JSON.toJSONString(result)); + return result; + } + + private String getBodyRequest(HttpServletRequest request) throws IOException { + // 直接从HttpServletRequest的Reader流中获取RequestBody + BufferedReader reader = request.getReader(); + StringBuilder builder = new StringBuilder(); + String line = reader.readLine(); + while(line != null){ + builder.append(line); + line = reader.readLine(); + } + reader.close(); + + String reqBody = builder.toString(); + return reqBody; + } + +}