分享一个参数校验的方法(validation参数校验)

在平时我们写项目的时候,前端向后端传输参数的时候都需要进行判断,比如说是否为空串啊,是否为null啊,在这个时候就需要进行参数校验了。到这个时候我们第一时间都会想到使用if,有几个参数就有几个if,这样的话看起来就十分的冗余或者说不那么“高大上”,所以在这里就分享一个方法–valid参数校验(主要在springboot项目中使用)。

步骤

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

依赖就不需要解释了吧,这个东西会springboot都能看懂

  • 创建一个pojo类(dto对象)例如:
@Data
@AllArgsConstructor
@NoArgsConstructor
public class UserDto {
    private String username;
    private String password;
}
  • 模拟请求
    这里就得进行参数校验了,怎么校验呢?
    1,在dto中添加校验规则。
@Data
@AllArgsConstructor
@NoArgsConstructor
public class UserDto {
    @NotEmpty(message = "用户名不能为空!")
    private String username;
    @NotEmpty(message = "密码不能为空!")
    private String password;
}

2,controller中写法。
在这里写法不唯一,有很多都是使用的全局异常处理,我这里的话就不使用那种方法了,来一种更笨的(个人觉得)。

@Controller
public class testDemo {

    @RequestMapping("/test")
    @ResponseBody
    public Map<String,Object> test(@Valid @RequestBody UserDto userDto, BindingResult result){
        HashMap<String, Object> map = new HashMap<>();
        List<FieldError> fieldErrors = result.getFieldErrors();
        if(!fieldErrors.isEmpty()) {
            StringBuilder res = new StringBuilder();
            for (FieldError fieldError : fieldErrors)
                res.append(fieldError.getDefaultMessage());
            map.put("code",201);
            map.put("msg",res);
            return map;
        }
        map.put("code",200);
        map.put("msg","ok!");
        return map;
    }
}

到这里基本上就完成了。那么怎么确定呢,我就使用postman来进行测试吧。

不正常情况
在这里插入图片描述
在这里插入图片描述

正常情况
在这里插入图片描述

这样的话是不是就比我们使用if来的快呢,这里的字段还是少的,如果使用if来进行判断,到时候字段多了,就得一直if了。

当然,在这种校验方法中,是有很多规则的,比如@NotNull、@NotBlank等等,这些东西的话就需要自己积累或者在使用的时候百度就可以,当然最基本的还是可以记一下,就比如@NotNull、@NotBlank、@NotEmpty的区别啊等等。
(这个demo在https://gitee.com/tenaciousxl/springboot.git,需要的可以去拉取下来看一下)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值