背景
响应结果返回之前拦截在开发维护时比较常用,如打印响应报文日志、规范统一返回报文格式等需求。
开发
实现并不难,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版权协议,转载请附上原文出处链接和本声明。