spring-boot-starter-web 項目中默認已經集成了 hibernate-validator
相關知識
@AssertTrue // 用於 boolean 字段,該字段只能為 true
@AssertFalse // 用於 boolean 字段,該字段只能為 false
@DecimalMax // 用於 Number 字段,只能小於或等於該值
@DecimalMin // 用於 Number 字段,只能大於或等於該值
@Digits(integer=2,fraction=20) // 檢查是否是數字,校驗整數位及小數位
@Future // 檢查該字段的日期是否是屬於將來的日期
@Length(min=2,max=6) // 用於字符串,檢查字段長度是否在指定範圍內
@Max // 用於 Number 字段,只能小於或等於該值
@Min // 用於 Number 字段,只能大於或等於該值
@NotNull // 該字段不能為空
@NotEmpty // 用於字符串,該字段不能為空字符串
@NotBlank // 用於字符串,該字段不能為空字符串,忽略空格
@Null // 該字段必須為空
@Size(min=2,max=4) // 用於字符串、數組、集合、Map等,檢查該字段的size是否在指定範圍
課程目標
本章將在 SpringBoot集成SpringBootJPA完成CURD 的基礎上,整合 hibernate-validator,對入參進行校驗。
操作步驟
添加依賴
spring-boot-starter-web 已經默認添加對 hibernate-validator 的依賴
編碼
為實體類添加校驗規則
使用校驗
在 Controller 接口的參數前面添加 @Valid 註解,入參注入時便會自動進行規則校驗,如果校驗成功,則執行方法體,如果校驗失敗,有兩種處理方法。
- 在參數列表的最後面添加一個 BindingResult 對象獲取校驗結果,自行組織輸出內容。
- 不使用 BindingResult 對象,則框架拋出異常,通過異常處理機制可以進行捕獲,組織輸出內容。
@RestController
源碼地址
本章源碼 :
https://github.com/caiyuanzi-song/boot.git
總結
一個安全的接口需要對每一個入參進行校驗,以保證參數合法性。
參考資料
http://www.cnblogs.com/mr-yang-localhost/p/7812038.html
https://blog.csdn.net/qq_22845447/article/details/84034289
擴展
自定義校驗
創建一個註解,其中 @Constraint 用於指向該註冊將使用的自定義校驗類
創建自定義校驗類
使用自定義校驗