@PostMapping("/join")
public ResponseEntity<Void> join(@Valid @RequestBody RequestJoin requestJoin){
boolean check = userService.create(requestJoin);
return (check) ?
ResponseEntity.status(HttpStatus.OK).body(null) :
ResponseEntity.status(HttpStatus.BAD_REQUEST).body(null);
}
UserServiceμ create ν¨μλ₯Ό νΈμΆνκ³ κ²°κ³Όμ λ°λΌ 200 λλ 400μ status codeλ₯Ό λ°ν
@Valid μ΄λ
Έν
μ΄μ
μ μ¬μ©ν΄ μ ν¨μ± κ²μ¬ μ²λ¦¬
implementation 'org.springframework.boot:spring-boot-starter-validation'
μ΄μ μλ spring-boot-starter-web μμ‘΄μ± λ΄λΆμ validationμ΄ μμμ§λ§,
spring boot 2.3 version μ΄μλΆν°λ μμ λͺ¨λλ‘ λΉ μ Έ validation μμ‘΄μ±μ λ°λ‘ μΆκ°ν΄μ€μΌ μ¬μ©κ°λ₯
@Getter
@Setter
@ToString
@AllArgsConstructor
@NoArgsConstructor
public class RequestJoin {
@NotEmpty(message = "μμ΄λ μ
λ ₯μ νμ μ
λλ€.")
@Size(min = 4, max = 12, message = "μμ΄λλ μ΅μ 4μμ΄μ 12μ μ΄νμ
λλ€.")
private String username;
@NotEmpty(message = "λΉλ°λ²νΈ μ
λ ₯μ νμ μ
λλ€.")
@Size(min = 8, max = 16, message = "λΉλ°λ²νΈλ μ΅μ 8μμ΄μ 16μ μ΄νμ
λλ€.")
private String password;
@NotEmpty(message = "λλ€μ μ
λ ₯μ νμ μ
λλ€.")
private String nickname;
@NotEmpty(message = "μ νλ²νΈ μ
λ ₯μ νμ μ
λλ€.")
private String telephone;
@NotEmpty(message = "μ΄λ©μΌ μ
λ ₯μ νμ μ
λλ€.")
@Pattern(regexp = "^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+.[A-Za-z]{2,6}$", message = "μ΄λ©μΌ νμμ λ§μ§ μμ΅λλ€.")
private String email;
@NotEmpty(message = "μ£Όμ μ
λ ₯μ νμ μ
λλ€.")
private String address;
public User toEntity(String password) {
return User.builder()
.id(null)
.username(username)
.nickname(nickname)
.password(password)
.telephone(telephone)
.email(email)
.address(address)
.authority(Authority.USER)
.build();
}
}
νλ‘ νΈμλμμλ μ ν¨μ± κ²μ¬λ₯Ό νμ§λ§ 그건 μ¬μ©μμ νΈμμ± μΈ‘λ©΄μ΄κ³ μλͺ»λ λ°μ΄ν°κ° DBμ λ°μλμ§ μλλ‘ λ°±μλμμλ μ ν¨μ±κ²μ¬ μμ μ νμμ μΌλ‘ ν΄μ€μΌν¨
@Override
public boolean create(RequestJoin requestJoin) {
// username μ€λ³΅ νμΈ
boolean check_user = checkUsername(requestJoin.getUsername());
boolean check_telephone = checkTelephone(requestJoin.getTelephone());
boolean check_email = checkEmail(requestJoin.getEmail());
if (check_user || check_telephone || check_email) {
return false;
}
User user = requestJoin.toEntity(bCryptPasswordEncoder.encode(requestJoin.getPassword()));
User created_user = userRepository.save(user);
return !created_user.getUsername().isEmpty();
}
νμ¬ DBμ ν΄λΉ μμ΄λ, μ νλ²νΈ, μ΄λ©μΌμ΄ μ‘΄μ¬ νλμ§ μ€λ³΅κ²μ¬
μ‘΄μ¬νμ§ μλλ€λ©΄ RequestJoin Dtoλ₯Ό Entityλ‘ λ³ν, λΉλ°λ²νΈλ BCryptPasswordEncoderλ₯Ό μ¬μ©ν΄
μνΈν
Spring Data Jpaμ save ν¨μλ₯Ό μ¬μ©νμ¬ μμν μμΌ DBμ μ μ₯νκ³ trueλ₯Ό λ°ν
@Override
public boolean checkUsername(String username) {
return userRepository.existsByUsername(username);
}
@Override
public boolean checkTelephone(String telephone) {
return userRepository.existsByTelephone(telephone);
}
@Override
public boolean checkEmail(String email) {
return userRepository.existsByEmail(email);
}
μ€λ³΅κ²μ¬νλλ° μ°μΈ checkUsername , checkTelephone, checkEmailν¨μλ Spring Data Jpaμ λ¬Έλ²μΌλ‘ μμ±ν existsByUsername, existsByTelephone, existsByEmail ν¨μλ₯Ό κ°κ° μ¬μ©