잘못된 데이터 원천 차단하기
클라이언트가 이름, 나이, 이메일 등을 보낼 때 빈 값이거나 형식이 틀린 경우, 서버의 서비스 로직까지 도달하기 전에 컨트롤러 단계에서 미리 차단해야 합니다. spring-boot-starter-validation을 추가하면 DTO에 어노테이션만 붙여서 강력한 유효성 검증을 할 수 있습니다.
| 어노테이션 |
설명 |
@NotBlank |
null, "", " " 모두 허용하지 않습니다. (문자열에 주로 사용) |
@Email |
올바른 이메일 형식(test@domain.com)인지 검증합니다. |
@Valid |
컨트롤러의 파라미터 앞에서 해당 객체의 Validation을 작동시킵니다. |
실전 코딩: DTO와 컨트롤러 유효성 검사
// DTO에 어노테이션 추가
public class SignupRequestDto {
@NotBlank(message = "이름은 필수 입력 값입니다.")
private String name;
@Email(message = "이메일 형식이 올바르지 않습니다.")
private String email;
}
// Controller에서 @Valid 적용
@PostMapping("/signup")
public String signup(@Valid @RequestBody SignupRequestDto dto) {
// 유효성 검사가 통과한 데이터만 이곳에 도달합니다!
return "가입 성공: " + dto.getName();
}
// Request Body (빈 이름, 잘못된 이메일)
{
"name": "",
"email": "invalid-email"
}
// Response (400 Bad Request)
{
"status": 400,
"errors": [
{ "field": "name", "message": "이름은 필수 입력 값입니다." },
{ "field": "email", "message": "이메일 형식이 올바르지 않습니다." }
]
}