유효성검사 ( @Valid )

HyeonWoo·2020년 12월 9일
0

스프링 & JPA

목록 보기
5/34
post-thumbnail

이번 장에서는 유효성 검사와 유효성 검사에 사용되는 다양한 어노테이션들을 알아 보려고 한다.


유효성 검사란?

요청한 데이터가 어떤 조건에 충족하는지 확인하는 작업.

예를 들어서, 회원가입을 할때 생년월일을 작성하는 상황이라고 하자.
클라이언트가 서버로 요청을 보낼때 생년월일은 '2020-10-10' 이러한 형식으로 요청 되어야한다.
'2020-13-10', '2020-02-31' 같은 날짜가 될 수 없다.

따라서, 잘못된 데이터 요청이 들어 올 경우 유효성 검사를 통하여 처리 해주어야한다.

유효성 검사는 프론트와 백엔드 모두 다 해줘야한다.
프론트에서만 유효성 검사를 하는 것은 보안상 위험이 되기 때문에, 백엔드에서도 체크해주는 것이 필수이다.

스프링부트에서 DTO의 필드 조건과, 메시지를 작성해주면 @Valid 어노테이션과 함께 유효성 검사를 할 수 있다

(* DTO란? )

  • 데이터 전달 객체
  • 클라이언트의 요청 데이터가 dto 클래스로 캡슐화 되어서 서버로 전달
  • 컨트롤러 <-> 서비스 계층 간 데이터 전달

유효성 에러에 대한 Response 상태코드

유효성 에러에 대한 권장 상태코드는 400- BAD REQUEST이다.


@Valid

옛날 버전의 스프링부트에서는 아래와 같은

implementation 'org.springframework.boot:spring-boot-starter-web'

스타터가 추가되어있으면 따로 의존성을 추가해줄 일이 없었다.

하지만 스프링 부트 2.3.0 이상 버전에서는

implementation 'org.springframework.boot:spring-boot-starter-validation'

위와 같은 의존성을 추가 해줘야 @Valid를 임포트하여 사용할 수 있다.
참고자료


관련 어노테이션

  • @NotNull - 속성 값이 Null이 아닌지 확인.
  • @AssertTrue - 주석이 달린 속성 값이 true 인지 확인.
  • @Size - 속성 값이 속성 min과 max 사이의 크기 인지 확인.( String, Collection, Map, 배열 속성에 적용할수 있음)
  • @Min - 속성값이 value값보다 작지 않은지 확인.
  • @Max - 속성값이 value값보다 크지 않은지 확인.
  • @Email - 속성값이 유효한 이메일주소 인지 확인.
  • @NotEmpty - 속성값이 null 또는 비어 있지 않은지 확인.(String,Collection,Map,Array값에만 적용)
  • @NotBlank- 텍스트 값에만 적용할 수 있으며 속성이 null 또는 공백이 아닌지 확인.
  • @Positive 및 @PositiveOrZero - 숫자값에만 적용되며 값이 양수인지 또는 0을 포함하여 양수인지 확인
  • @Negative 및 @NegativeOrZero - 숫자값에만 적용되며 값이 음수인지 또는 0을 포함하여 음수인지 확인
  • @Past 및 @PastOrPresent 날짜 값이 현재를 포함하여 과거인지 또는 과거인지 확인 (LocalDate, LocalDateTime에 적용)
  • @Future 및 @FutureOrPresent 날짜 값이 미래인지 또는 현재를 포함한 미래인지 확인
profile
학습 정리, 자기 개발을 위한 블로그

0개의 댓글