[프로젝트] 27. 유효성 검사(validation) 추가
프로젝트에 유효성 검사(validation)를 추가하는 것은 입력 데이터의 정확성을 보장하고, 서버 측에서 예상치 못한 오류를 방지하는 중요한 단계입니다. Spring Boot에서는 spring-boot-starter-validation 의존성을 통해 Bean Validation API를 쉽게 사용할 수 있습니다. 이를 통해 컨트롤러에서 들어오는 요청의 DTO 객체에 대한 유효성 검사를 선언적으로 할 수 있습니다.
Gradle 설정
build.gradle에 spring-boot-starter-validation 의존성을 추가하여 프로젝트에 Bean Validation을 활성화합니다.
// valid
implementation 'org.springframework.boot:spring-boot-starter-validation'
AuthService 컨트롤러 메서드에 유효성 검사 적용
AuthService 컨트롤러의 join과 login 메서드에 @Valid 어노테이션을 사용하여 요청 바디의 유효성을 검사합니다. 유효성 검사를 통과하지 못하면 메서드는 실행되지 않으며, 스프링은 클라이언트에게 유효성 검사 오류에 대한 정보를 자동으로 반환합니다.
@PostMapping("/join")
public void join(
@Valid @RequestBody RegisterDto registerDto
) {
authService.join(registerDto);
}
@PostMapping("/login")
public TokenResponseDto login(
@Valid @RequestBody LoginDto loginDto
) {
return authService.login(loginDto);
}
DTO 클래스에 유효성 검사 규칙 정의
LoginDto와 RegisterDto 클래스에 유효성 검사 규칙을 정의합니다. @Email, @NotBlank 등의 어노테이션을 사용하여 필드에 대한 유효성 검사 규칙을 선언합니다.
LoginDto
import javax.validation.constraints.Email;
@Getter
public class LoginDto {
@Email
private String email;
private String password;
}
RegisterDto
import javax.validation.constraints.Email;
import javax.validation.constraints.NotBlank;
import java.time.LocalDateTime;
@Getter
public class RegisterDto {
@NotBlank
private String name;
@Email
private String email;
@NotBlank
private String password;
private String profileImg;
private String introduce;
// 생략
결론
이 방법을 통해, 클라이언트로부터 받은 입력 데이터가 서버 측에서 정의한 규칙에 따라 유효한지 검사할 수 있습니다. 유효성 검사를 통과하지 못한 경우, Spring Boot는 클라이언트에게 의미 있는 오류 메시지를 함께 담은 응답을 자동으로 반환합니다. 이를 통해 애플리케이션의 로버스트함을 높이고 사용자 경험을 개선할 수 있습니다.