使用tinyvalidator實現伺服器端驗證 -Yuri Mednikov
向您演示一個小的tinyvalidator庫,tinyvalidator庫是執行驗證流程的小型簡單解決方案,該庫可以在處理程式級別用於驗證輸入。
定義資料模型
驗證從所需資料及其引數的定義開始。tinyvalidator使用基於註釋的方法。
public class AuthRequest { @Email private String email; @Size(min = 8) private String password; // getters, setters } |
在此程式碼段中,我們使用了兩個註釋:@Email和@Size。第一個檢查欄位是否包含有效的電子郵件地址(儘管這適用於format。您需要實施電子郵件確認流程來檢查此電子郵件確實存在)。第二個斷言password字串的長度不小於8。
您的API中可能還需要使用許多其他有用的內建驗證器註釋:
- @NotNull –檢查欄位是否為空
- @HttpUrl –檢查欄位是否包含有效的網址
- @Pattern –接受與定義的常規表示式匹配的欄位
構建驗證流程的第二部分實際上是呼叫驗證器元件,該元件根據定義的規則對bean進行斷言:
public void login(Context context) { Validator validator = new Validator(); AuthRequest request = context.bodyAsClass(AuthRequest.class); List<ConstraintViolation> violations = validator.validate(request); if (!violations.isEmpty()) { String message = violations.stream() .map(v -> v.getName().concat(": ").concat(v.getMessage())) .collect(Collectors.joining(", ")); throw new BadRequestResponse(message); } AuthResponse result = service.login(request); context.json(result); } public void signup (Context context){ AuthRequest request = context.bodyAsClass(AuthRequest.class); Validator validator = new Validator(); List<ConstraintViolation> violations = validator.validate(request); if (!violations.isEmpty()) { String message = violations.stream() .map(v -> v.getName().concat(": ").concat(v.getMessage())) .collect(Collectors.joining(", ")); throw new BadRequestResponse(message); } AuthResponse result = service.signup(request); context.json(result); } |
首先,我們在該方法中需要建立一個新validator例項:
Validator validator = new Validator(); |
然後,我們需要將bean傳遞給驗證器。在我們的例子中,bean代表一個登入/註冊請求(AuthRequest實體):
List<ConstraintViolation> violations = validator.validate(request); |
這種方法基本上返回一個包含驗證不透過的Collection。如果bean有效,則此Collection為空。否則,我們將獲得沒有透過驗證的欄位。在這種情況下,我們需要中斷帶有BadRequest響應的處理程式流,然後是有關錯誤訊息。
您可以在github儲存庫中找到此文章的完整原始碼。
相關文章
- 使用Spring Reactive MongoDB進行自定義更新查詢 -Yuri MednikovSpringReactMongoDB
- 簡單幾步實現滑動驗證碼(後端驗證)後端
- Laravel 與 jwt 多表(多使用者端)驗證隔離的實現LaravelJWT
- 使用javascript實現使用者名稱驗證JavaScript
- PHP (Laravel) 實現 iOS 內購服務端驗證PHPLaraveliOS服務端
- Web 端 實現 app “輸入驗證碼 ”的效果WebAPP
- ASP伺服器端表單驗證類伺服器
- easy-captcha實現驗證碼驗證APT
- 使用WebService釋出soap介面,並實現客戶端的https驗證Web客戶端HTTP
- golang 中使用 JWT 實現登入驗證GolangJWT
- 如何使用angularjs實現表單驗證AngularJS
- 使用 Spring Validator 介面實現驗證Spring
- MVC驗證10-到底用哪種方式實現客戶端服務端雙重非同步驗證MVC客戶端服務端非同步
- Django實現驗證碼Django
- java實現驗證碼Java
- rails實現驗證碼AI
- 使用javascript 實現.net 驗證控制元件功能JavaScript控制元件
- 2.13.3 使用 Oracle Wallet 實現在DBCA中使用身份驗證Oracle
- MVC驗證09-使用MVC的Ajax.BeginForm方法實現非同步驗證MVCORM非同步
- js實現身份證號碼驗證JS
- 簡訊驗證實現方式
- canvas實現滑動驗證Canvas
- Swift實現Touch ID驗證Swift
- node學習---jwt實現驗證使用者身份JWT
- layui使用html+servlet+ajax實現登入驗證UIHTMLServlet
- python使用JWT(json web token)實現驗證PythonJWTJSONWeb
- lumen驗證類 實現控制器場景驗證
- JAX-RSREST客戶端實現基本身份驗證機制REST客戶端
- TP6實現前後端分離的圖片驗證碼,驗證碼以介面形式返回後端
- 遠端伺服器連線(金鑰驗證,跳板機)伺服器
- Laravel 驗證類 實現 路由場景驗證 和 控制器場景驗證Laravel路由
- 用某語言API實現讓伺服器無密碼驗證API伺服器密碼
- 基於使用者認證的前後端實現後端
- 使用.Net Core實現的一個圖形驗證碼
- Spring Security 6中使用PKCE實現身份驗證Spring
- MVC驗證01-基礎、遠端驗證MVC
- java圖形驗證碼實現Java
- 純CSS實現表單驗證CSS