目录
1 前言
2 使用步骤
2.1 pom.xml中引入依赖
2.2 在参数前添加@Pattern注解
2.3 在类上添加@Validated注解
2.4 编写异常处理器
1 前言
在我们编写后端项目的时候,常常需要对前端传送的数据进行校验。当然,我们可以使用if-else来进行校验,不过这样会使得我们的代码相当繁琐,因此我们需要引入Spring Validation,来帮我们简化操作、提升效率。
此文章只为提供一种校验思路并介绍大致步骤,若想深入了解Spring Validation可参考其它文章/视频。
2 使用步骤
2.1 pom.xml中引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
2.2 在参数前添加@Pattern注解
举个例子,比如我们要写一个用户注册的方法,用户名和密码的长度要控制在[3, 10]之间,则有如下代码:
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@PostMapping("/register")
public Result register(@Pattern(regexp = "^\\S{3,10}$") String username, @Pattern(regexp = "^\\S{3,10}$") String password) {
//注意3,10这里,10之前不能打空格,比如:3, 10就会报错
//其它代码
}
}
解释一下@Pattern(regexp = "^\\S{3,10}$"的含义:
-
@Pattern
: 这是Java的注解之一,通常用于对字符串的格式进行验证。它配合regexp
参数来指定一个正则表达式,用于检查被注解的字符串参数是否符合某种模式。 -
regexp = "^\\S{3,10}$"
: 这是@Pattern
注解中的regexp
参数,表示要匹配的正则表达式。现在让我们分解这个正则表达式:-
^
: 表示匹配字符串的开始。 -
\\S
: 表示匹配任意非空白字符。 -
{3,10}
: 表示前面的字符(即非空白字符)的数量应该在3到10之间。 -
$
: 表示匹配字符串的结束。
综合起来,这个正则表达式的意思是匹配一个长度在3到10之间的、由非空白字符组成的字符串。
-
2.3 在类上添加@Validated注解
@RestController
@RequestMapping("/user")
@Validated
public class UserController {
@Autowired
private UserService userService;
@PostMapping("/register")
public Result register(@Pattern(regexp = "^\\S{3,10}$") String username, @Pattern(regexp = "^\\S{3,10}$") String password) {
//注意3,10这里,10之前不能打空格,比如:3, 10就会报错
//其它代码
}
}
到此,还没有大功告成,用Postman进行测试,会发现得到一个500的报错,如下图,这并不是我们想要的,因此我们还需要配置一个异常处理器,来返回我们想要的数据类型。
2.4 编写异常处理器
//告诉SpringBoot这个类是用于处理异常的
@RestControllerAdvice
public class GlobalExceptionHandler {
//指定错误类型,这里是所有的异常
@ExceptionHandler(Exception.class)
//Result即我们想要返回的数据类型
public Result handleException(Exception e) {
//因为有部分异常没有封装信息,所有借助StringUtils.hasLength来进行判断
return Result.error(StringUtils.hasLength(e.getMessage()) ? e.getMessage() : "未知错误");
}
}
我们再来进行测试,如下图,可以看到,我们得到了想要的结果。
文章来源:https://www.toymoban.com/news/detail-823706.html
到此,Spring Validation参数检验的大致方法和步骤已经介绍完毕。文章来源地址https://www.toymoban.com/news/detail-823706.html
到了这里,关于浅析SpringBoot的API参数校验的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!