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만 가능
'Spring' 카테고리의 다른 글
Unparseable date /date <-> string 변환하기 (0) | 2023.01.11 |
---|---|
Spring - 엔티티 간의 연간관계 매핑(일대다,다대일,다대다,일대일) (0) | 2022.11.05 |
Spring - JDBC기반 Domain Entity와 테이블 설계 (0) | 2022.11.02 |
Spring - Mapper 클래스의 구현, MapStruct (0) | 2022.10.30 |
Spring - 컨트롤러(DI를 통한 서비스 계층 ↔ API 계층 연동과정) (0) | 2022.10.30 |