이메일 인증을 할 때 올바른 이메일 형식이 아니면 이메일인증을 할 수 없고,
비밀번호의 경우 보안때문에 특정 규칙에 맞게 입력을 해야 한다.
Pattern.matches([정규식],[대상]);
이런식으로 체크를 해야하지만, Spring 라이브러리 중 Validation 있다는것을 알게 되었고, 이는 내가 개발을 하는데 있어 편리함을 가져다 주었다.
필자는 Gradle을 사용하여 프로젝트를 작성하였고,
Gradle 은 implementation 를 해주어 해당 라이브러리를 추가해줄 수 있었다.
//Gradle
implementation 'org.springframework.boot:spring-boot-starter-validation'
이렇게 해주고, 내 Entity에서 Validation을 위한 어노테이션을 추가해주면 된다.
public class RegisterRequest {
@NotEmpty(message = "이름 입력은 필수 입니다.")
private String userName;
@NotEmpty(message = "이메일 입력은 필수 입니다.")
@Pattern(regexp = "^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+.[A-Za-z]{2,6}$", message = "이메일 형식에 맞지 않습니다.")
private String userEmail;
@NotEmpty(message = "비밀번호 입력은 필수 입니다.")
@Size(min = 5, message = "비밀번호는 최소 5자 이상이어야 합니다.")
private String userPassword;
}
이와같은 형식으로 Validation을 위한 어노테이션을 추가해주면 손쉽게 데이터 형식 확인을 할 수 있다.
제가 확인한 Validatio에서 사용할 수 있는 타입은 아래와 같습니다
이 외에도 다양한 값들이 있지만, 우선 내가 사용해본건 위에것들이 전부이다.
@RestController
public class UserController {
@PostMapping("/api/user")
public ResponseEntity<?> getUser(@Validated RegisterRequest userReq, Errors errors){
if(errors.hasErrors()) return new ResponseEntity(HttpStatus.BAD_REQUEST);
return new ResponseEntity(HttpStatus.OK);
}
}
보이는것처럼 @Validated 어노테이션을 사용하면 자동으로 검증을 해준다.
그럼 그냥 post로 값을 보내기만 하면 되는거야?
그렇다. 그냥 post로 RegitserReqeust의 형식에 맞춰 값을 보내기만하면 된다.