在 Spring Boot 中,我们可以使用 Java Bean Validation API(JSR 303)来对接口参数进行校验,该 API 遵循标准的注解格式进行参数校验。
在 Spring Boot 中,我们可以使用 Java Bean Validation API(JSR 303)来对接口参数进行校验,该 API 遵循标准的注解格式进行参数校验。
以下是一些常见的注解:
- @NotNull:校验对象是否为 null;
- @Size(min, max):校验字符串的长度是否在 min 和 max 之间;
- @Min:校验数字是否大于等于指定值;
- @Max:校验数字是否小于等于指定值;
- @Email:校验字符串是否符合 Email 格式。
下面是一个例子,假设我们有一个用户注册接口,需要校验用户名和密码:
@RestController
public class UserController {
@PostMapping("/register")
public ResponseEntity<?> registerUser(@RequestBody @Valid UserDto userDto) {
// 处理用户注册请求
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;
}
}
}
在上面的例子中,我们在 UserDto 类上使用了 @Valid 注解,该注解会告诉 Spring Boot 对该对象进行校验。在 UserDto 类中,我们使用了 @NotNull 和 @Size 注解对 username 和 password 进行校验,保证它们不为 null,且 password 的长度在 6 到 20 之间。
如果校验失败,Spring Boot 会抛出MethodArgumentNotValidException 异常,我们可以在 @ExceptionHandler 中捕获该异常,并返回一个包含错误信息的 JSON 响应,例如:
@RestControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(MethodArgumentNotValidException.class)
public ResponseEntity<?> handleMethodArgumentNotValidException(MethodArgumentNotValidException ex) {
List<String> errors = ex.getBindingResult()
.getAllErrors()
.stream()
.map(DefaultMessageSourceResolvable::getDefaultMessage)
.collect(Collectors.toList());
return ResponseEntity.badRequest().body(errors);
}
}
在上面的例子中,我们定义了一个全局异常处理器,并在其中捕获MethodArgumentNotValidException 异常,将校验失败的错误信息封装成一个列表并返回。
通过上述方式,我们就可以对接口参数进行校验,并在校验失败时返回错误信息,提高接口的健壮性和可靠性。