请求参数增强
- 使用@ControllerAdvice这个控制器增强注解,来对所有Controller进行增强(当然也可以指定包下或带有指定注解的Controller类)。
- 增强后实现 RequestBodyAdvice 接口,完成请求体参数增强。在实现的接口中完成请求参数加工操作。
/**
* 请求参数在加工。
* 利用 Controller增强注解 + 实现 RequestBodyAdvice 请求完成
* 继承 RequestBodyAdviceAdapter类,是为了方便有些方法使用spring框架默认执行。
* RequestBodyAdviceAdapter类中,已经重写了 beforeBodyRead、afterBodyRead、handleEmptyBody这三个方法。
* 为了方便,继承这个类后,我只需要重写自己需要的方法即可。
*/
@ControllerAdvice
public class CheckRequestBodyAdvice extends RequestBodyAdviceAdapter implements RequestBodyAdvice {
@Override
public boolean supports(MethodParameter methodParameter, Type type, Class<? extends HttpMessageConverter<?>> aClass) {
System.out.println(methodParameter.getMethod().getName());
System.out.println(type.getTypeName());
System.out.println(aClass);
return true;
}
@Override
public Object afterBodyRead(Object body, HttpInputMessage httpInputMessage, MethodParameter methodParameter, Type type, Class<? extends HttpMessageConverter<?>> aClass) {
System.out.println(body);
return body;
}
}
注意
- 如果请求体没有内容,则拦截不到。比如:GET请求,请求参数在URL上,不在请求体里。