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


前言

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

上一篇文章講了多種接受參數的方法【快學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屬性。

使用Validated注解開啟參數校驗

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

NotBlank 非空判斷

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

@NotBlank
private String username;

測試

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

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

通過控制台,我們可以看到拋出了一個MethodArgumentNotValidException異常,上面的返回結果其實是springboot默認的異常捕獲器返回的。為了統一接口的數據返回格式,我們也需要自定義一個全局異常攔截器,這個將會在下一講中講解。

我們還可以通過NotBlank注解的message屬性設置異常信息:

@NotBlank(message = "username不可為空")
private String username;

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

Length字符串長度判斷

還是那個Param.java,我們給username加上Length注解,如下:

@Length(min = 2,max = 3)
@NotBlank(message = "username不可為空")
private String username;

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

同樣,我們也可以使用message屬性來設置返回錯誤信息。這里就不演示了。

NotNull 限制屬性不可謂null

雖然前面有NotBlank注解了,但是一些Integer,Long等包裝類型,還是需要用到NotNull注解來判斷。

范圍判斷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.接口參數校驗

總結

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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM