数据效验一般分为前端效验和后端效验,有些小伙伴可能觉得,前端做了效验,后端还有必要做效验吗?这个认知其实是错误的,后端对于前端提交的数据,都是不信任的,都需要重新效验,因为可以通过其他手段绕过前端效验,把不安全的数据提交给后端处理。

  • 后端添加效验很简单,我们只需把表单对象,添加相应的注解,也就是通过添加注解指定效验规则,如下所示:
public class SysPostVO implements Serializable {
    private static final long serialVersionUID = 1L;

    @Schema(description = "id")
    private Long id;

    @Schema(description = "岗位编码", required = true)
    @NotBlank(message = "岗位编码不能为空")
    private String postCode;

    @Schema(description = "岗位名称", required = true)
    @NotBlank(message = "岗位名称不能为空")
    private String postName;

    @Schema(description = "排序", required = true)
    @Min(value = 0, message = "排序值不能小于0")
    private Integer sort;

    @Schema(description = "状态  0:停用   1:正常", required = true)
    @Range(min = 0, max = 1, message = "状态不正确")
    private Integer status;

}
  • 下面是比较常用的校验注解,如下所示:

@Null 被注解的元素必须为null
@NotNull 被注解的元素必须不为null
@NotEmpty 被注释的字符串的必须非空
@NotBlank 验证字符串非null,且长度必须大于0
@AssertTrue 被注解的元素必须为true
@AssertFalse 被注解的元素必须为false
@Min(value) 被注解的元素必须为数字,其值必须大于等于最小值
@Max(value) 被注解的元素必须为数字,其值必须小于等于最小值
@Size(max,min) 被注解的元素的大小必须在指定范围内
@Range(min=,max=,message=) 被注释的元素必须在合适的范围内
@Digits(integer, fraction) 被注释的元素必须是一个数字,其值必须在可接受的范围内
@Email 被注释的元素必须是电子邮箱地址
@Pattern(regex=,flag=) 被注释的元素必须符合指定的正则表达式

  • 然后通过@Valid注解,在Controller层进行处理的,如下所示:
@PostMapping("/sys/post")
public Result<String> save(@RequestBody @Valid SysPostVO vo){
    sysPostService.save(vo);

    return Result.ok();
}
  • 完成上面的步骤后,后端就可以处理表单数据效验了。