Spring Boot 더 간편한 검증, Validation 라이브러리
이메일 인증을 할 때 올바른 이메일 형식이 아니면 이메일인증을 할 수 없고,
비밀번호의 경우 보안때문에 특정 규칙에 맞게 입력을 해야 한다.
Pattern.matches([정규식],[대상]);
이런식으로 체크를 해야하지만, Spring 라이브러리 중 Validation 있다는것을 알게 되었고, 이는 내가 개발을 하는데 있어 편리함을 가져다 주었다.
설치
필자는 Gradle을 사용하여 프로젝트를 작성하였고,
Gradle 은 implementation 를 해주어 해당 라이브러리를 추가해줄 수 있었다.
//Gradle
implementation 'org.springframework.boot:spring-boot-starter-validation'
이렇게 해주고, 내 Entity에서 Validation을 위한 어노테이션을 추가해주면 된다.
Entity에 적용
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에서 사용할 수 있는 타입은 아래와 같습니다
- @Size ← min 값과 max값을 이용한 최소/최대 입력값
- @Email ← email 입력을 받을 때 확인해주는 형식. 이 기능은 거의 Pattern을 이용한 정규식으로 많이 사용한다
- @Pattern ← 정규식을 이용한 값 검증
- @NotEmpty ← null이거나 빈 값이 아닐때만 허용
- @NotNull ← null만 허용하지 않음
- @Null ← null만 허용
이 외에도 다양한 값들이 있지만, 우선 내가 사용해본건 위에것들이 전부이다.
Controller에 적용
@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의 형식에 맞춰 값을 보내기만하면 된다.
Author And Source
이 문제에 관하여(Spring Boot 더 간편한 검증, Validation 라이브러리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@vpdls1511/Spring-Validator저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)