使用spring-boot-starter-validation实现前端参数校验
目录
(图片来源网络,侵删)
原理
在Spring Boot中集成javax.validation来校验前端传递的参数是Java企业版(Java EE)的一部分,并在Java SE环境中通过Bean Validation API来实现。这个API提供了一种声明式校验的方式,你可以通过在实体类或DTO(数据传输对象)的字段上添加注解来指定校验规则。
实现步骤
添加依赖
org.springframework.boot spring-boot-starter-validation
在实体类或DTO上添加校验注解
import javax.validation.constraints.NotBlank; import javax.validation.constraints.Size; public class UserDTO { @NotBlank(message = "用户名不能为空") private String username; @Size(min = 6, max = 20, message = "密码长度必须在6到20个字符之间") private String password; // 省略getter和setter方法 }
在控制器中使用校验
import org.springframework.http.ResponseEntity; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; @RestController public class UserController { @PostMapping("/users") public ResponseEntity createUser(@Valid @RequestBody UserDTO userDTO) { // 处理用户数据 return ResponseEntity.ok("用户创建成功!"); } }
全局异常处理
import org.springframework.http.HttpStatus; import org.springframework.web.bind.MethodArgumentNotValidException; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseStatus; @ControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(MethodArgumentNotValidException.class) @ResponseStatus(HttpStatus.BAD_REQUEST) public ResponseEntity handleValidationExceptions(MethodArgumentNotValidException ex) { // 从异常中提取错误信息并返回 return ResponseEntity.badRequest().body(ex.getBindingResult().getFieldError().getDefaultMessage()); } }
测试校验
启动Spring Boot应用,并通过Postman或其他API测试工具来测试校验逻辑。如果传递的参数不符合校验规则,你应该会收到一个400 Bad Request的响应,并带有相应的错误信息。
(图片来源网络,侵删)
(图片来源网络,侵删)
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。
还没有评论,来说两句吧...