在Spring boot中对请求的参数做简单的验证,可以使用javax.validation注解。需要做以下配置:
1. 在pom.xml配置, 引入spring boot validation starter (这步比较容易遗漏,因为代码中没有对它的引用依赖,打包编译都不会报错 )
< dependency>
< groupId> org.springframework.boot</ groupId>
< artifactId> spring-boot-starter-validation</ artifactId>
</ dependency> `
2. 在需要请求的实体类中使用javax.validation注解
import lombok. Data ;
import javax. validation. constraints. NotEmpty ;
import javax. validation. constraints. NotNull ;
@Data
public class QueryVo {
private String data;
@NotEmpty ( message = "Input can not be empty!" )
@NotNull ( message = "Input can not be empty!" )
private String input;
}
3. 在对应的请求中使用@Valid 注解
@ApiOperation ( value = "查询" )
@RequestMapping ( path = "/query" , method = RequestMethod . POST)
@ResponseBody
public APIModel query ( @Valid @RequestBody QueryVo query) throws Exception {
return service. query ( query) ;
}
4. 捕获异常并组装返回消息格式
@ExceptionHandler ( value = BindException . class )
public APIModel bindExceptionHandler ( HttpServletRequest request, BindException e) {
logger. error ( "Error found:" , e) ;
BindingResult bindingResult = e. getBindingResult ( ) ;
List < ObjectError > objectErrors = bindingResult. getAllErrors ( ) ;
ObjectError objectError = objectErrors. get ( 0 ) ;
return APIModel . error ( objectError. getDefaultMessage ( ) ) ;
}
5. 测试代码获取如下结果