【快學springboot】4.接口參數校驗

前言

在開發接口的時候,參數校驗是必不可少的。參數的類型,長度等規則,在開發初期都應該由產品經理或者技術負責人等來約定。若是不對入參作校驗,頗有可能會由於一些不合法的參數而致使系統出現異常。java

上一篇文章講了多種接受參數的方法【快學springboot】3.多種接受參數的方式。由於目前json類型的參數是最經常使用的,因此這裏只講解json類型的參數校驗。其餘類型的大同小異。正則表達式

新建一個Param.java

public class Param {
 
 private String username;
 public String getUsername() {
 return username;
 }
 public void setUsername(String username) {
 this.username = username;
 }
}
複製代碼

目前這個類只有一個username屬性。spring

使用Validated註解開啓參數校驗

@PostMapping(value = "/validate/notblank")
public Object validateNotBlank(@RequestBody @Validated Param param) {
 return param;
}
複製代碼

NotBlank 非空判斷

修改Param.java,在username屬性上添加NotBlank註解json

@NotBlank
private String username;
複製代碼

測試springboot

【快學springboot】4.接口參數校驗

【快學springboot】4.接口參數校驗

經過控制檯,咱們能夠看到拋出了一個MethodArgumentNotValidException異常,上面的返回結果實際上是springboot默認的異常捕獲器返回的。爲了統一接口的數據返回格式,咱們也須要自定義一個全局異常攔截器,這個將會在下一講中講解。bash

咱們還能夠經過NotBlank註解的message屬性設置異常信息:數據結構

@NotBlank(message = "username不可爲空")
private String username;
複製代碼

【快學springboot】4.接口參數校驗

Length字符串長度判斷

仍是那個Param.java,咱們給username加上Length註解,以下:app

@Length(min = 2,max = 3)
@NotBlank(message = "username不可爲空")
private String username;
複製代碼

【快學springboot】4.接口參數校驗

一樣,咱們也可使用message屬性來設置返回錯誤信息。這裏就不演示了。測試

NotNull 限制屬性不可謂null

雖然前面有NotBlank註解了,可是一些Integer,Long等包裝類型,仍是須要用到NotNull註解來判斷。ui

範圍判斷Min和Max

在Param.java上新增一個age屬性,而且使用Min和Max註解限定大小

@Min(1)
@Max(100)
private Integer age;
複製代碼

這樣寫的問題是,若是age爲空,則不會校驗。以下:

【快學springboot】4.接口參數校驗

因此咱們還須要加上NotNull註解

@Min(1)
@Max(100)
@NotNull
private Integer age;
複製代碼

【快學springboot】4.接口參數校驗

【快學springboot】4.接口參數校驗

也可以使用@Range註解來限定範圍

@Range(min = 1, max = 100)
複製代碼

Email 註解校驗郵件

@Email
private String email;
複製代碼

【快學springboot】4.接口參數校驗

Pattern 註解校驗正則表達式

@Pattern(regexp = "\d{4}-\d{2}-\d{2}")
private String birthday;
複製代碼

【快學springboot】4.接口參數校驗

總結

以上總結了部分經常使用的參數校驗的方法,固然還有很詳細的一些沒有列舉處理,有須要的,能夠自行搜索使用方式便可。參數校驗,每每須要和全局的異常攔截器來配套使用,使得返回的數據結構永遠是保持一致的,這樣才能方便客戶端解釋。

下一節會對統一返回格式和全局異常攔截器作一個講解。

相關文章
相關標籤/搜索