SpringBoot项目中一般使用hibernate-validator来对请求参数进行校验,但hibernate-validator提供的注解有限,有时候需要根据具体业务扩展自定义注解对参数进行校验。
前言:
在实际运用中,hibernate-validator的注解分为校验请求参数及请求体,两个校验的情况在处理上有一些差别,下面分开讲解。
SpringBoot中提供了HandlerInterceptorAdapter适配器供我们自定义拦截器,可以拦截自定义或所有的请求做相应的处理。
HandlerInterceptorAdapter中共有四个方法:
在实际项目开发中,经常需要对前台发来的请求body进行处理,例如参数过滤,参数校验,不合法参数拦截,参数解密等等。Spring中提供了 @ControllerAdvice+RequestBodyAdvice 的解决方案 对请求进行全局统一处理,可以避免在controller层对业务代码入侵。
注意:该方法只对使用了@RequestBody注解的参数生效,本质上是AOP,获取的是在请求头中的属性,如果通过GET请求方式,例如http://localhost:8080/xx?id=1 此种方法,是无法获得id参数的,此处下面将用代码证明。