Spring Boot 더 간편한 검증, Validation 라이브러리

nGyu·2022년 1월 23일
0
post-thumbnail

이메일 인증을 할 때 올바른 이메일 형식이 아니면 이메일인증을 할 수 없고,
비밀번호의 경우 보안때문에 특정 규칙에 맞게 입력을 해야 한다.

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의 형식에 맞춰 값을 보내기만하면 된다.

profile
지금보다 내일을, 모레를 준비하자

0개의 댓글

관련 채용 정보