常见问题
各种校验
接口层面校验
@NotBlank(message="")----必填
@NotBlank(message = "用户名不能为空")
private String name;
在controller中接口层面校验
@PostMapping("/create")
public User create(@RequestBody @Validated UserDTO dto){
User user=new User();
BeanUtils.copyProperties(dto,user);
userRepository.save(user);
return user;
}
注:@Validated,添加该注解使之在userDTO中定义的验证规则生效
测试,username传入空字符串,返回400,error里返回的是具体错误信息
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ILj1vNKg-1582620099011)(/Users/zangchuanjun/Library/Application Support/typora-user-images/image-20200225162234408.png)]
数据库层面校验
为什么不在接口层面校验
原因是从接口接收到用户输入的信息,会做一些业务逻辑,在业务执行的过程中会改变一些字段的值,最终存入数据库中的数据不是用户最初输入的数据,所以要在两个层面进行校验,接口层面保证用户输入的东西是正确的,另一方面保证在经过业务逻辑后往数据库插入的数据是正确的
代码实例:用户传入的数