유효성 검사는 @Valid 애너테이션과 DTO 클래스 내의 검증 애너테이션을 통해 이루어집니다.
아래와 같이 Valid 어노테이션을 이용하여 유효성 검사가 실행되는 DTO를 컨트롤러단에서 설정하고,
@PostMapping("/login")
public ResponseEntity<?> login(@Valid @RequestBody LoginRequestDTO loginRequestDTO) {
return memberService.login(loginRequestDTO);
}
@PostMapping("/join")
public ResponseEntity<?> join(@Valid @RequestBody JoinDTO joinDTO) {
return memberService.join(joinDTO);
}
DTO 파일에서 Validation 라이브러리를 이용해 유효성 검사를 시행할 수 있습니다.
package com.draconist.goodluckynews.domain.member.dto;
import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotNull;
import lombok.Builder;
import lombok.Data;
@Data
@Builder
public class LoginRequestDTO {
@NotNull(message = "이메일 입력은 필수입니다.")
@Email
private String email;
@NotNull(message = "패스워드 입력은 필수입니다.")
private String password;
}
이번에는 정규식과 pattern 라이브러리를 이용해 이메일과 비밀번호, 기타 값들의 유효성을 부여하겠습니다.
package com.draconist.goodluckynews.domain.member.dto;
import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Pattern;
import jakarta.validation.constraints.Size;
import lombok.Builder;
import lombok.Data;
@Data
@Builder
public class JoinDTO {
@NotBlank(message = "이메일 입력은 필수입니다.")
@Email(message = "올바른 이메일 형식이어야 합니다.")
@Pattern(
regexp = "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\\\.[a-zA-Z]{2,}$",
message = "이메일은 'example@gmail.com' 형식이어야 합니다."
)
private String email;
@NotBlank(message = "비밀번호 입력은 필수입니다.")
@Size(min = 6, message = "비밀번호는 최소 6자 이상이어야 합니다.")
private String password;
@NotBlank(message = "이름 입력은 필수입니다.")
private String name;
private String profileImage;
@NotBlank(message = "오전/오후 값은 필수입니다.")
@Pattern(regexp = "AM|PM", message = "'AM' 또는 'PM'만 입력 가능합니다.")
private String amPm;
private int hours;
private int minutes;
}
- 이메일은 아무거나@아무거나@.com 형식이어야 합니다.
- 허용됨
- test@example.com
- hello.world@domain.net
- user123@sub.example.co.kr
- name.surname@company.org
- plainaddress (도메인 없음)
- @missing-user.com (아이디 없음)
- user@.com (도메인 없음)
- 비밀번호는 최소 6자이상이어야 합니다
- amPm은 AM, PM 중 하나 string값을 작성해야 합니다.
이렇게 하면 오류가 떴을 때 프론트엔드 단에서도 유효성 검사 여부가 출력됩니다.
{"isSuccess":false,"code":"COMMON400","message":"유효성 검사 실패","result":{"email":"이메일은 '뭐시기@뭐시기.뭐시기' 형식이어야 합니다."}}
'대외활동 > DRACONIST-백엔드' 카테고리의 다른 글
04. EC2부터 RDS 연결하기 DRACONIST (0) | 2025.02.24 |
---|---|
02. Autowired DRACONIST (1) | 2025.02.20 |
스스로 공부하는 스프링부트. 10단원 REST API~12단원 (1) | 2025.02.14 |
스스로 공부하는 스프링부트. 6,7,8,9단원 CRUD완성 (0) | 2025.02.13 |
스스로 공부하는 스프링부트. 4단원 롬복리팩터링, 5단원 게시글 조회 (1) | 2025.02.12 |