손 부상 때문에 글을 자주 못쓰거나 퀄리티가 떨어질 수 있습니다..ㅠ
웹 애플리케이션으로 전송되는 데이터를 확인하는 제일 좋은 방법은 확인하는 것이다.
그리고 요청을 자동으로 검증해주는 파이프를 Nest에서 제공한다.
- ValidationPipe
- ParseIntPipe
- ParseBoolPipe
- ParseArrayPipe
- ParseUUIDPipe
첫 번째 파이프를 제외하면 나머지는 타입에 따라 다른 것이라고 유추할 수 있고
첫 번째는 class-validator
패키지를 사용하고 유효성 검사에도 사용된다. 그리고 유효성 검사에 편리하게 만들어진 파이프다!
이 파이프는 class-validator
와 class-transformer
를 사용한다고 적혀있는데 기본 옵션은 아래와 같다.
export interface ValidationPipeOptions extends ValidatorOptions {
transform?: boolean;
disableErrorMessages?: boolean;
exceptionFactory?: (errors: ValidationError[]) => any;
}
ValadationPipe
를 바인딩한 후 자동 검증되게 만들어봅시다
async function bootstrap() {
const app = await NestFactory.create(AppModule);
app.useGlobalPipes(new ValidationPipe());
await app.listen(3000);
}
bootstrap();
이제 엔드포인트를 만든 후 자동 검증이 되는지 확인해봅시다
@Post()
create(@Body() createUserDto: CreateUserDto) {
return 'This action adds a new user';
}
CreateUserDto
에 있는 몇가지 유효성 검사 규칙을 추가할 수 있다. 이런 규칙을 적용한 후 엔드포인트에 도달한다면 자동으로 Bad Request를 보내주는 등 해준다.
import { IsEmail, IsNotEmpty } from 'class-validator';
export class CreateUserDto {
@IsEmail()
email: string;
@IsNotEmpty()
password: string;
}