每一个成功人士的背后,必定曾经做出过勇敢而又孤独的决定。
放弃不难,但坚持很酷~
虽然前端对字段进行了校验约束,但在后端代码中,也很有必要对字段进行约束校验。防止用户直接调用 api 接口进行请求。
1、在 controller 层,首先需要在类上添加 @Validated 注解。
2、方法入参,分为两种情况:一种是单独参数,另一种是对象参数。
引入包为:
import javax.validation.constraints.*; import org.hibernate.validator.constraints.Length;
@NotNull
:字段不能为空。@NotEmpty
:验证注解的元素值不为 null 且不为空(字符长度、集合大小、map
大小、数组长度不能为零)@NotBlank
:验证注解的元素值不为空(不为null、去除首位空格后长度为0),不同于 @NotEmpty,@NotBlank 只应用于字符串且在比较时会去除字符串的空格。@Size(max, min)
:字段元素大小范围。(null
也视为有效元素)@Null
:字段必须为空。@Min
:字段最小值。(不适用double
和float
)@Max
:字段最大值。(不适用double
和float
)@Range
:字段范围。(@Min
和@Max
结合)@Length
:字段长度范围。@Email
:字段必须符合Email
格式。@Pattern
:正则表达式,不能用在 Integer、Character 类型。例如:@Pattern(regexp = "^[a-zA-Z]\w+$", message = "name命名仅支持数字,字母(大小写)和下划线组合,且必须以字母开头。")@Digits(integer,fraction)
:限制必须为一个小数,且整数部分的位数不能超过integer,小数部分的位数不能超过fraction@Future
:限制必须是一个将来的日期@Past
:限制必须是一个过去的日期@AssertTrue
:推断是否正确。@Range(min = 0, max = 100, message = "数值1不在正确范围")
private Integer integer1;
@Range(min = 0, max = 100, message = "数值2不在正确范围")
private Integer integer2;
@AssertTrue(message = "integer1 必须小于 integer2")
public boolean isValid() {
return this.integer1 < this.integer2;
}
建议还是通过 @ControllerAdvice 和 @ExceptionHandler 注解写一个统一异常返回类,这样,在统一异常返回类里面,直接再加一个 ValidationException 异常捕获,就可以对字段校验失败的请求进行统一返回,进而提示用户。如下图所示:
好了各位,以上就是这篇文章的全部内容了,能看到这里的人呀,都是人才。
白嫖不好,创作不易。 各位的支持和认可,就是我创作的最大动力,我们下篇文章见!
如果本篇博客有任何错误,请批评指教,不胜感激 !