요청에 필요한 name, email, age 같은 필드를 클래스 형태로 명확하게 정의합니다.
DTO + VALIDATION PIPE
DTO는 요청 형태를 고정하고 Pipe는 실행 전에 검증한다
NestJS에서 DTO는 API 입력 데이터의 모양을 선언하고, ValidationPipe는 컨트롤러에 도달하기 전에 변환과 검증을 수행합니다.
Request클라이언트가 JSON 본문을 전송한다.
DTO필드와 데코레이터로 허용할 형식을 선언한다.
Pipetransform, whitelist, forbid 옵션으로 정리하고 검증한다.
Controller통과한 값만 비즈니스 로직으로 전달한다.
@IsString, @IsEmail, @Min처럼 규칙을 속성 옆에 선언해 입력 오류를 자동으로 잡습니다.
plain object를 DTO 인스턴스로 바꾸고, 필요한 경우 문자열 값을 의도한 타입으로 변환합니다.
whitelist와 forbidNonWhitelisted로 DTO에 없는 속성을 제거하거나 요청 자체를 거부합니다.
보안 기준
DTO에 없는 필드를 그대로 받으면 의도하지 않은 속성이 DB나 서비스
로직까지 흘러갈 수 있습니다.
운영 기준
프로덕션에서는 상세 검증 메시지 노출 범위를 조절하고, 로그에는
실패 원인을 추적 가능하게 남깁니다.