SpringBoot 接口对参数进行校验

开发 架构
在 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 异常,将校验失败的错误信息封装成一个列表并返回。

通过上述方式,我们就可以对接口参数进行校验,并在校验失败时返回错误信息,提高接口的健壮性和可靠性。

责任编辑:姜华 来源: 今日头条
相关推荐

2022-12-30 08:49:41

SpringBoot@Validated

2021-11-10 10:03:18

SpringBootJava代码

2023-11-08 13:33:00

AOP技术信息

2021-05-18 09:25:54

SpringBoot参数校验

2023-11-29 07:23:04

参数springboto

2023-03-28 08:07:12

2022-03-10 09:00:42

webpack配置项检验库函数

2022-05-03 10:43:43

SpringJava

2021-08-12 10:32:50

Spring Boot参数校验分组校验

2021-08-10 15:11:27

Spring Boot参数校验

2015-08-28 09:29:37

Volley框架

2009-12-25 09:13:42

ADSL接入网

2020-12-08 08:08:51

Java接口数据

2022-04-21 09:59:53

Nest参数校验

2022-11-10 07:53:54

Spring参数校验

2023-03-06 08:49:02

加密和解密SpringBoot

2020-08-31 08:42:21

Node Controller数据校验

2023-10-18 18:38:44

数据校验业务

2010-02-22 10:18:29

Python代码

2010-03-01 14:28:46

Python进程
点赞
收藏

51CTO技术栈公众号