在開發RESTFull API 和普通的表單提交都須要對用戶提交的數據進行校驗,例如:用戶姓名不能爲空,年齡必須大於0 等等。這裏咱們主要說的是後臺的校驗,在 SpringBoot 中咱們能夠經過使用 Hibernate Validator 來進行後臺的數據校驗的。spring
閒話少說!接下來就開始介紹如何使用 Hibernate Validator 來進行數據的校驗。數組
咱們在添加用戶的功能基礎上來進行改造。springboot
用戶Model類代碼以下:app
public class User {
private String name;
private Integer age;
//省略get and set 方法
}複製代碼
用戶Controller代碼以下:框架
@RequestMapping(value = "",method = RequestMethod.POST)
public void add(User user){
log.info("添加用戶成功:"+"name:{},age:{}",user.getName(),user.getAge());
}複製代碼
第一步咱們先在 User 類上添加校驗的註解,具體代碼以下:工具
public class User {
@NotEmpty(message="請輸入您的名稱!")
private String name;
@Max(value = 100, message = "年齡必須在20-100之間!")
@Min(value= 20 ,message= "年齡必須在20-100之間!" )
private Integer age;
..省略get 和set 方法
}複製代碼
咱們來大體說明一下 註解的含義:測試
第二步就是對用戶添加方法進行改造spa
用戶添加方法中的 User 參數須要聲明 @Valid 註解,添加該註解主要是指定要校驗的參數實例,而後在添加用戶方法中添加 BindingResult 參數。BindingResult:主要是存儲校驗結果的數據,咱們能夠經過 BindingResult 來判斷校驗是否經過和獲取校驗錯誤提示信息。插件
具體代碼以下:日誌
@PostMapping()
public User add(@Valid User user,BindingResult bindingResult){
if(bindingResult.hasErrors()) {
String defaultMessage = bindingResult.getFieldError().getDefaultMessage();
System.out.println(defaultMessage);
return null;
}
log.info("springboot添加用戶成功:"+"name:{},age:{}",user.getName(),user.getAge());
return user;
}複製代碼
這裏測試使用的是谷歌的一個插件工具:Advanced REST client 來完成的,你也能夠選擇你順手的工具進行測試。
測試用戶名稱爲空的狀況:後臺日誌輸出以下:
測試年齡不在20到100 的數據 :
後臺日誌輸出以下:
Hibernate Validator 是 實現JSR349的校驗框架,他默認提供已經定義好的校驗註解,咱們常用的大體以下: