返回

给程序设置"安全卫士",让违法参数无路可逃——Spring Boot框架参数校验Validator框架

后端

在日常的接口开发中,为了防止非法参数对业务造成影响,经常需要对接口的参数做校验。例如,登录的时候需要校验用户名密码是否为空,创建用户的时候需要校验邮件、手机号码格式是否准确。靠代码对接口参数一个个校验的方式不可取,而且容易遗漏,所以就需要引进Spring Boot框架参数校验的Validator框架。

Validator框架是Spring Boot框架中用来校验参数的一个框架,它提供了很多校验注解,可以使用这些注解来对接口参数进行校验。Validator框架是基于Hibernate Validator框架的,Hibernate Validator是一个参数校验库,它提供了很多校验注解,可以使用这些注解来对Java Bean的属性进行校验。Validator框架是Spring Boot框架的扩展,它将Hibernate Validator框架集成到了Spring Boot框架中,使得在Spring Boot框架中使用Hibernate Validator框架更加方便。

使用Validator框架校验参数的步骤如下:

  1. 在要校验的参数上添加校验注解。
  2. 在Controller方法中使用@Validated注解来开启参数校验。
  3. 在Controller方法中使用BindingResult对象来获取校验结果。
  4. 如果校验失败,则可以根据BindingResult对象中的错误信息来返回错误信息。

Validator框架提供了很多校验注解,常用的校验注解有:

  • @NotNull:校验参数不能为空。
  • @NotEmpty:校验参数不能为空字符串。
  • @Size:校验参数的长度。
  • @Email:校验参数的邮箱格式。
  • @Pattern:校验参数的正则表达式。

例如,以下代码演示了如何使用Validator框架来校验登录接口的参数:

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

public class LoginRequest {

    @NotNull
    @Size(min = 6, max = 20)
    private String username;

    @NotNull
    @Size(min = 6, max = 20)
    private String password;

    // getter and setter methods
}
import javax.validation.Valid;

import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class LoginController {

    @PostMapping("/login")
    public String login(@Valid @RequestBody LoginRequest request) {
        //省略业务逻辑

        return "login success";
    }
}

Validator框架是一个非常强大的参数校验框架,它可以帮助我们轻松地对接口参数进行校验,从而防止非法参数对业务造成影响。