SpringBoot校驗(yàn)前端傳遞的參數(shù)的流程步驟
Spring Boot 參數(shù)校驗(yàn)(基于 Hibernate Validator)
1. 簡(jiǎn)介與依賴
- 作用:對(duì) Controller 接收的參數(shù)進(jìn)行合法性校驗(yàn),提升接口健壯性。
- 底層實(shí)現(xiàn):Hibernate Validator(Bean Validation 規(guī)范的參考實(shí)現(xiàn))。
- 推薦依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>自動(dòng)引入 hibernate-validator + javax.validation-api,無(wú)需手動(dòng)管理版本。
2. 使用方式
校驗(yàn) @RequestBody(JSON 對(duì)象)
- 在參數(shù)前加
@Valid,無(wú)需@Validated。
@PostMapping("/user")
public Result createUser(@Valid @RequestBody User user) { ... }
校驗(yàn) @RequestParam / @PathVariable 等
- 必須在 Controller 類(或方法)上加
@Validated。
@RestController
@Validated // ← 關(guān)鍵!
public class UserController {
@GetMapping("/user/{id}")
public Result getUser(@Min(1) @PathVariable Long id) { ... }
}
最佳實(shí)踐:Controller 類統(tǒng)一加 @Validated,覆蓋所有校驗(yàn)場(chǎng)景。
3. 常用注解
非空校驗(yàn)
- @NotNull:驗(yàn)證對(duì)象不為null,但允許空字符串或空白字符
- @NotEmpty:驗(yàn)證字符串/集合/數(shù)組非null且長(zhǎng)度/大小>0(不檢查空白字符)
- @NotBlank:驗(yàn)證字符串非null且至少包含一個(gè)非空白字符
范圍校驗(yàn)
- @Size(min=, max=):限制字符串/集合/數(shù)組的長(zhǎng)度/大小范圍
- @Min:驗(yàn)證數(shù)字最小值(含邊界值)
- @Max:驗(yàn)證數(shù)字最大值(含邊界值)
格式校驗(yàn)
- @Email:驗(yàn)證字符串是否符合郵箱格式
- @Pattern(regexp = “…”):通過(guò)正則表達(dá)式自定義校驗(yàn)規(guī)則
時(shí)間校驗(yàn)
- @Past:驗(yàn)證日期是否在當(dāng)前時(shí)間之前
- @Future:驗(yàn)證日期是否在當(dāng)前時(shí)間之后
4. 全局異常處理器
統(tǒng)一處理校驗(yàn)失敗異常,返回結(jié)構(gòu)化錯(cuò)誤信息。有了全局異常處理器,前端可以收到規(guī)范化的錯(cuò)誤信息
@RestControllerAdvice
public class GlobalValidationExceptionHandler {
// 處理 @RequestBody 校驗(yàn)失敗
@ExceptionHandler(MethodArgumentNotValidException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
public ApiResult<Map<String, String>> handleRequestBody(
MethodArgumentNotValidException ex) {
Map<String, String> errors = new HashMap<>();
ex.getBindingResult().getFieldErrors()
.forEach(e -> errors.put(e.getField(), e.getDefaultMessage()));
return ApiResult.error(400, "參數(shù)校驗(yàn)失敗").data(errors);
}
// 處理 @RequestParam / @PathVariable 校驗(yàn)失敗
@ExceptionHandler(ConstraintViolationException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
public ApiResult<Map<String, String>> handleParams(
ConstraintViolationException ex) {
Map<String, String> errors = new HashMap<>();
ex.getConstraintViolations().forEach(v ->
errors.put(v.getPropertyPath().toString(), v.getMessage()));
return ApiResult.error(400, "參數(shù)校驗(yàn)失敗").data(errors);
}
}
返回示例:
{ "code": 400, "message": "參數(shù)校驗(yàn)失敗", "data": { "name": "姓名不能為空" } }
到此這篇關(guān)于SpringBoot校驗(yàn)前端傳遞的參數(shù)的流程步驟的文章就介紹到這了,更多相關(guān)SpringBoot校驗(yàn)前端傳遞參數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot多模塊依賴沖突排查與架構(gòu)優(yōu)化實(shí)戰(zhàn)
本文詳細(xì)記錄了在SpringBoot多模塊項(xiàng)目開發(fā)中遇到的依賴版本沖突、模塊依賴設(shè)計(jì)不合理等問(wèn)題的排查和解決方案的過(guò)程,主要重點(diǎn)關(guān)注了父模塊依賴管理、模塊化拆分、按需依賴等等,需要的朋友可以參考下2026-04-04
Java讀取Excel文件并寫入數(shù)據(jù)庫(kù)的示例代碼
這篇文章主要介紹了Java讀取Excel文件并寫入數(shù)據(jù)庫(kù)的示例代碼,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2025-06-06
springboot 使用QQ郵箱發(fā)送郵件的操作方法
這篇文章主要介紹了springboot使用QQ郵箱發(fā)送郵件功能,本文通過(guò)實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-10-10
SpringBoot(JAVA)整合微信公眾號(hào)消息推送完整步驟(文本、圖片/視頻推送)
微信公眾號(hào)消息推送包括文本推送和圖文/視頻推送兩類,文本推送通過(guò)模板消息或自定義消息實(shí)現(xiàn),而圖文/視頻推送需先上傳素材至臨時(shí)/永久素材庫(kù),再上傳圖文消息,最后進(jìn)行消息推送,文中將實(shí)現(xiàn)的方法介紹的非常詳細(xì),需要的朋友可以參考下2024-09-09
Java的基礎(chǔ)語(yǔ)法學(xué)習(xí)筆記
這里為大家整理了Java的基礎(chǔ)語(yǔ)法學(xué)習(xí)筆記,包括關(guān)鍵詞、運(yùn)算符與基本的流程控制語(yǔ)句寫法等,需要的朋友可以參考下2016-05-05

