article thumbnail image
Published 2022. 10. 30. 14:23

MemberPostDto 클래스의 각 멤버 변수에 유효성 검증을 위한 애너테이션을 추가한 후

컨트롤러로 전달받는 DTO 매개변수 앞에 @Valid를 붙여줌

 

  • @NotBlank
    • 값이 비어있지 않은지를 검증
    • null 값이나 공백(””), 스페이스(” “) 같은 값들을 모두 허용하지 않는다.
    • 유효성 검증에 실패하면 에러 메시지(400 ‘Bad Request’)가 콘솔에 출력
  • @Email
    • 유효한 이메일 주소인지를 검증
    • 유효성 검증에 실패하면 내장된 디폴트 에러 메시지(400 ‘Bad Request’)가 콘솔에 출력
  • @Pattern
    •  정규 표현식(Reqular Expression)에 매치되는 유효한 값인지를 검증

 

 

 

📌쿼리 파라미터(Query Parameter 또는 Query String) 및 @Pathvariable에 대한 유효성 검증

 

예시로 patchMember() 핸들러 메서드의 URI path에서 사용되는 @PathVariable("member-id") long memberId 변수에 1 이상의 수만 들어오도록 하는 유효성 검증을 걸어보자

 

 

@Min

@RestController
@RequestMapping("/v1/members")
@Validated   // @PathVariable이 추가된 변수에 유효성 검증이 정상적으로 수행되려면 클래스 레벨에 @Validated 애너테이션을 반드시 붙여주어야 한다
public class MemberController {

@PatchMapping("/{coffee-id}")
public ResponseEntity patchMember(@PathVariable("member-id") @Min(1) long memberId,
                                    @Valid @RequestBody MemberPatchDto memberPatchDto) {
        memberPatchDto.setMemberId(memberId);
        //생략
        return new ResponseEntity<>(memberPatchDto, HttpStatus.OK);

결과 : 500 ‘Internal Server Error’

 

 

 


📌기타 유효성 검증 애너테이션

 

@NotNull - Null 불가

 

@Null - Null만 입력 가능

 

@NotEmpty - Null, 빈 문자열 불가

 

@NotBlank - Null, 빈 문자열, 스페이스만 있는 문자열 불가

 

@Size(min=,max=) - 문자열, 배열의 크기 충족해야 가능

 

@Pattern(regex=) - 정규식 충족해야 가능

 

@Max(숫자) - 지정값 이하만 가능

 

@Min(숫자) - 지정값 이상만 가능

 

@Positive -  양수만 가능

 

@PositiveOrZero - 0과양수만 가능

 

@Negative - 음수만 가능

 

@NegativeOrZero - 0과 음수만 가능

 

@Email - 이메일 형식만 가능

 

@DecimalMax(value=) - 지정 값(실수) 이하만 가능

 

@DecimalMin(value=) - 지정 값(실수) 이상만 가능

 

@AssertFalse - false만 가능

 

@AssertTrue - true만 가능

 


 

 

복사했습니다!