javax.validation在Spring Boot请求中使用方式
作者:IT 挑山工
在Spring Boot中进行请求参数验证,可以通过引入`spring-boot-starter-validation`依赖,并在实体类和控制器中使用`javax.validation`注解来实现,配置包括引入依赖、在实体类中添加注解、在控制器方法中使用`@Valid`注解以及捕获异常并返回自定义错误消息
在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. 测试代码获取如下结果

总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
