首页 > 编程语言 > 详细

Spring Boot 优雅的参数校验

时间:2021-07-15 17:25:17      阅读:25      评论:0      收藏:0      [点我收藏+]

Spring Boot 优雅的参数校验

开发过程中接口请求参数 POST 类型请求都已实体来接受参数,很多不靠谱的前端拿到接口用样例请求就发送到后台中,经常 ‘空指针‘ ,该如何对实体类型请求参数进行校验呢
原文来自:Java学习者社区

1.常用校验工具: hibernate Validate

1.1 引入依赖

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>4.3.1.Final</version>
</dependency>

1.2 常用注解

注解 说明
@Length(min=,max=) 检查所属的字段长度是否在min和maz之间,只能用字符串
@Range(min=,max=,message=) 被注释的元素必须在合适的范围
@Max 该字段的值只能小于或等于最大值
@Min 该字段值只能大于或等于最小值
@NotNull 不能为null
@NotBlank 不能为空,检查时会将空格忽略
@NotEmpty 不能为空,这里的空是指空字符串
@Pattern(regex=,flag=) 必须符合正则表达式

1.3 使用方法

需要在Controller层中搭配 @Validated 或者 @Valid 注解一起使用, @Validated@Valid 区别不大

注解 @Validated @Valid
所属的包 属于org.springframework.validation.annotation,属于spring 提供 属于javax.validation包下是JDK提供的
是否支持分组和排序

实体使用样例

public class DataSetSaveVO {
    //唯一标识符为空
    @NotBlank(message = "user uuid is empty")
    //用户名称只能是字母和数字
    @Pattern(regexp = "^[a-z0-9]+$", message = "user names can only be alphabetic and numeric")
    @Length(max = 48, message = "user uuid length over 48 byte")
    private String userUuid;

    //数据集名称只能是字母和数字
    @Pattern(regexp = "^[A-Za-z0-9]+$", message = "data set names can only be letters and Numbers")
    //文件名称过长
    @Length(max = 48, message = "file name too long")
    //文件名称为空
    @NotBlank(message = "file name is empty")
    private String name;

    //数据集描述最多为256字节
    @Length(max = 256, message = "data set description length over 256 byte")
    //数据集描述为空
    @NotBlank(message = "data set description is null")
    private String description;
}

Controller层的使用

@PostMapping
public ResponseVO createDataSet(@Valid @RequestBody DataSetSaveVO dataSetVO) {
    return ResponseUtil.success(dataSetService.saveDataSet(dataSetVO));
}

Spring Boot 优雅的参数校验

原文:https://www.cnblogs.com/syer/p/15015436.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!