SpringBoot优雅的参数校验

我们在写接口的时候,一定会需要给接口的入参参数进行校验,例如:名称不能包含敏感词,不能长度超过,不能有奇怪的词等。但是如果参数过多,校验规则复杂,就会出现大量的 if-else 代码。不仅代码优雅,而且后期维护麻烦。所以SpringBoot提供了优雅的参数校验方式。

1:导入依赖包

	因为是Springboot自带的参数校验,所以我们只需要引入Springboot-web包就可以了
 <!-- SpringBoot Web容 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

2:创建入参类

@Data
public class UserTask {

    @NotNull(message = "用户id不能为空", groups = { Insert.class , Update.class })
    private Long id;
	
    @NotBlack(message = "用户名称不能为空", groups = { Update.class })
    private String name;
    

    @NotBlank(message = "手机号不能为空")
    @Pattern(regexp = "^[1][3,4,5,6,7,8,9][0-9]{9}$", message = "手机号格式有误", groups = {Insert.class, Update.class})
    private String mobile;
    
}
  • @XXX:表示校验注解 如:@NotNull , @NotBlack

  • message : 表示 参数校验不通过的报错信息

  • group:表示这个参数在什么时候校验,是新增,还是修改,还是删除的时候。

常用注解:
在这里插入图片描述
在这里插入图片描述

3:在接口中使用方法

/**
* 走参数校验注解
*
* @param userDTO
* @return
*/
@PostMapping("/save/valid")
public RspDTO save(@RequestBody @Validated({Insert.class}) UserTask user) {
    userService.save(userDTO);
    return RspDTO.success();
}

注意要加 @Validated 注解

4: 在全局校验中增加校验异常

MethodArgumentNotValidException是springBoot中进行绑定参数校验时的异常,需要在springBoot中处理,其他需要 处理ConstraintViolationException异常进行处理.

    /**
     * 自定义验证异常
     */
@ExceptionHandler(MethodArgumentNotValidException.class)
public Object validExceptionHandler(MethodArgumentNotValidException e)
{
    log.error(e.getMessage(), e);
    String message = e.getBindingResult().getFieldError().getDefaultMessage();
    return message;
}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值