• 基于springBoot的参数校验


    定义restApi接口时,需要对请求参数进行校验,为了避免大量的if...else..语句,导致代码太过臃肿

     

    pom依赖:

    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
    </dependency>
    /**
    * 基于springBoot的参数校验
    *
    * @author nanfengxiangbei
    * @date 2022-06-08
    */
    @RestController
    @RequestMapping(value = "/demo")
    public class ValidateDemoController {
    private static final Logger logger = LoggerFactory.getLogger(ValidateDemoController.class);

    /**
    * http://127.0.0.1:10092/demo/validate 请求样例
    *
    * {
    * "userName":"nanfengxiangbei",
    * "phone":"13688881122",
    * "email":"1021608888@qq.com",
    * "age":18,
    * "workAge":10,
    * "url":"http://www.baidu.com",
    * "birthDate":"2022-06-08 00:00:00"
    * }
    *
    */
    @RequestMapping(value = "/validate")
    @ResponseBody
    public BaseResponseVO<UserParamsVO> getMobileByAccount(@Validated @RequestBody UserParamsVO userParamsVO,
    BindingResult result) {

    List<FieldError> fieldErrors = result.getFieldErrors();
    if (!fieldErrors.isEmpty()) {
    return BaseResponseVO.fail("-1", fieldErrors.get(0).getDefaultMessage());
    }

    return BaseResponseVO.success("0", "SUCCESS", new UserParamsVO("username", "13688887777"));
    }
    }

    /**
    * 请求参数VO
    * @author nanfengxiangbei
    * @date 2022/6/8 10:12
    */
    public class UserParamsVO {

    @NotEmpty(message = "用户名不能为空")
    private String userName;

    @NotNull(message = "手机号不能为空")
    @Length(max = 11, message = "手机号超过11位")
    private String phone;

    @Email(message = "邮箱格式不对")
    private String email;

    @Min(value = 18, message = "未满十八岁")
    private Integer age;

    @Max(value = 50, message = "工龄输入超过合法值")
    private Long workAge;

    @URL(message = "url格式不正确")
    private String url;

    @Pattern(regexp = "^((([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29))\\s+([0-1]?[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$", message = "时间格式校验不通过")
    private String birthDate;

    public UserParamsVO() {
    }

    public UserParamsVO(String userName, String phone) {
    this.userName = userName;
    this.phone = phone;
    }

    public String getUserName() {
    return userName;
    }

    public void setUserName(String userName) {
    this.userName = userName;
    }

    public String getPhone() {
    return phone;
    }

    public void setPhone(String phone) {
    this.phone = phone;
    }

    public String getEmail() {
    return email;
    }

    public void setEmail(String email) {
    this.email = email;
    }

    public Integer getAge() {
    return age;
    }

    public void setAge(Integer age) {
    this.age = age;
    }

    public Long getWorkAge() {
    return workAge;
    }

    public void setWorkAge(Long workAge) {
    this.workAge = workAge;
    }

    public String getBirthDate() {
    return birthDate;
    }

    public void setBirthDate(String birthDate) {
    this.birthDate = birthDate;
    }

    public String getUrl() {
    return url;
    }

    public void setUrl(String url) {
    this.url = url;
    }

    @Override
    public String toString() {
    return "UserParamsVO{" +
    "userName='" + userName + '\'' +
    ", phone='" + phone + '\'' +
    ", email='" + email + '\'' +
    ", age=" + age +
    ", workAge=" + workAge +
    ", birthDate=" + birthDate +
    ", url='" + url + '\'' +
    '}';
    }
    }


  • 相关阅读:
    Spring Could not find unique TaskExecutor bean 错误
    Postman 测试 API 如何上传文件
    Spring Boot 项目上传日志到 Azure Application Insights
    Spring Boot 和 Hibernate 的 H2 数据库配置来进行启动测试
    android TextView多行数据显示
    MarkDown 查看器 typora
    Ubuntu16.04多个版本python编译器的安装和切换
    关于LPC824Lite开发板下载程序时提示"Invalid ROM Table"
    8寸防震三防平板电脑Windows/安卓
    HaaS100 OLED信息屏显示案例
  • 原文地址:https://www.cnblogs.com/nanfengxiangbei/p/16364200.html
Copyright © 2020-2023  润新知