SpringBoot3-使用Spring Validation对注册接口进行参数校验

参数

参数名称说明类型是否必须备注
username用户名String5-16位非空字符
password密码String5-16位非空字符

手动校验:

public Result register(String username, String password){
    if (username!=null && username.length()>=5 && username.length()<=16 &&
        password!=null && password.length()>=5 && password.length()<=16)
    {
        ......
    }else {
        return Rusult.error("参数不合法");
}

此时,可以完成用户名和密码的校验了,但是代码看上去有点繁琐,如果我们需要校验的参数较多的情况下,就会更加繁琐了,所以需要用其他方案解决这个问题。

Spring Validation

Spring提供的一个参数校验框架,使用预定义的注解完成参数校验

1. 引入Spring Validation起步依赖

    <!--validation依赖-->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-validation</artifactId>
    </dependency>

2. 在参数前面添加@Pattern注解

3. 在Controller类上添加@Validated注解

@Validated
public class UserController {

    @Autowired
    private UserService userService;

    @PostMapping("/register")
    public Result register(@Pattern(regexp = "^\\S{5,16}$") String username, @Pattern(regexp = "^\\S{5,16}$") String password){
        ......
    }
}

现在就可以完成校验了,但是测试的时候,校验失败浏览器得到的状态是500,所以接下来还需要一个全局异常来处理参数校验失败异常。

解决:

@RestControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(Exception.class)
    public Result handleException(Exception e){
        e.printStackTrace();
        return Result.error(StringUtils.hasLength(e.getMessage())? e.getMessage() : "操作失败");
    }
}

再返回Postman测试时显示:

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

。歖。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值