【发布时间】:2020-12-01 11:47:12
【问题描述】:
我正在使用 Spring Boot 创建一个休息应用程序。我有三个逻辑层:控制器、服务和存储库。我应该在哪里检查给定的用户名和类似的值是否已经存在于数据库中?
在控制器层,我检查用户输入(长度、大小等)。我也可以在这里检查用户名存在吗?例如:
if(this.userService.existUserByUsername(request.getUsername()))
throw new ResponseStatusException(
HttpStatus.CONFLICT, "User with given username already exists");
我可以通过调用注册表方法(existByUsername)并抛出自定义错误,然后在控制器中捕获它在服务层中检查它吗?
public void addUser(SignUpRequestDto signUpRequestDto){
if(this.userRepository.existsByUsername(signUpRequestDto.getUsername()))
throw new UserAlreadyExistException("User with given uusernamealready exist");
else
this.userRepository.save(this.convertSignUpRequestDtoToEntity(signUpRequestDto));
}
或者我应该依靠实体上的休眠注释来处理这些异常?
@NotNull
@Column(name = "username", unique = true)
private String username;
非常感谢您的所有反馈。
【问题讨论】:
标签: java spring rest validation