新聞中心
在 Spring Boot 中,我們可以使用 Java Bean Validation API(JSR 303)來對(duì)接口參數(shù)進(jìn)行校驗(yàn),該 API 遵循標(biāo)準(zhǔn)的注解格式進(jìn)行參數(shù)校驗(yàn)。

以下是一些常見的注解:
- @NotNull:校驗(yàn)對(duì)象是否為 null;
- @Size(min, max):校驗(yàn)字符串的長(zhǎng)度是否在 min 和 max 之間;
- @Min:校驗(yàn)數(shù)字是否大于等于指定值;
- @Max:校驗(yàn)數(shù)字是否小于等于指定值;
- @Email:校驗(yàn)字符串是否符合 Email 格式。
下面是一個(gè)例子,假設(shè)我們有一個(gè)用戶注冊(cè)接口,需要校驗(yàn)用戶名和密碼:
@RestController
public class UserController {
@PostMapping("/register")
public ResponseEntity> registerUser(@RequestBody @Valid UserDto userDto) {
// 處理用戶注冊(cè)請(qǐng)求
return ResponseEntity.ok().build();
}
public static class UserDto {
@NotNull
private String username;
@NotNull
@Size(min = 6, max = 20)
private String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
}
在上面的例子中,我們?cè)?UserDto 類上使用了 @Valid 注解,該注解會(huì)告訴 Spring Boot 對(duì)該對(duì)象進(jìn)行校驗(yàn)。在 UserDto 類中,我們使用了 @NotNull 和 @Size 注解對(duì) username 和 password 進(jìn)行校驗(yàn),保證它們不為 null,且 password 的長(zhǎng)度在 6 到 20 之間。
如果校驗(yàn)失敗,Spring Boot 會(huì)拋出MethodArgumentNotValidException 異常,我們可以在 @ExceptionHandler 中捕獲該異常,并返回一個(gè)包含錯(cuò)誤信息的 JSON 響應(yīng),例如:
@RestControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(MethodArgumentNotValidException.class)
public ResponseEntity> handleMethodArgumentNotValidException(MethodArgumentNotValidException ex) {
Listerrors = ex.getBindingResult()
.getAllErrors()
.stream()
.map(DefaultMessageSourceResolvable::getDefaultMessage)
.collect(Collectors.toList());
return ResponseEntity.badRequest().body(errors);
}
}
在上面的例子中,我們定義了一個(gè)全局異常處理器,并在其中捕獲MethodArgumentNotValidException 異常,將校驗(yàn)失敗的錯(cuò)誤信息封裝成一個(gè)列表并返回。
通過上述方式,我們就可以對(duì)接口參數(shù)進(jìn)行校驗(yàn),并在校驗(yàn)失敗時(shí)返回錯(cuò)誤信息,提高接口的健壯性和可靠性。
網(wǎng)站名稱:SpringBoot接口對(duì)參數(shù)進(jìn)行校驗(yàn)
URL分享:http://www.5511xx.com/article/coccgei.html


咨詢
建站咨詢
