Spring Boot响应结果返回拦截

背景

响应结果返回之前拦截在开发维护时比较常用,如打印响应报文日志、规范统一返回报文格式等需求。

开发

实现并不难,springMVC为我们提供了一个很好用的接口ResponseBodyAdvice,我们只要实现这个接口即可

@RestControllerAdvice
@Slf4j
public class ResponseResultAdvice implements ResponseBodyAdvice<Object> {

	// return true表示对响应进行处理,你可以用returnType来做判断什么时候不需要做处理
    @Override
    public boolean supports(MethodParameter returnType, Class<? extends HttpMessageConverter<?>> converterType) {
        return true;
    }

    @Override
    public Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType, Class<? extends HttpMessageConverter<?>> selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) {
        // 响应报文打印是最常用的
        log.info("--result response start--");
        log.info("调用方法:{}", returnType.getMethod().getName());
        log.info("响应报文:{}", JSON.toJSONString(body));
        log.info("--result response end--");
        // 可对响应报文做其他操作,这里不举例
        return body;
    }
}


版权声明:本文为interestANd原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。