[TIL] NestJS 공부 26일차

손 부상 때문에 글을 자주 못쓰거나 퀄리티가 떨어질 수 있습니다..ㅠ

Validation

웹 애플리케이션으로 전송되는 데이터를 확인하는 제일 좋은 방법은 확인하는 것이다.
그리고 요청을 자동으로 검증해주는 파이프를 Nest에서 제공한다.

  • ValidationPipe
  • ParseIntPipe
  • ParseBoolPipe
  • ParseArrayPipe
  • ParseUUIDPipe

첫 번째 파이프를 제외하면 나머지는 타입에 따라 다른 것이라고 유추할 수 있고
첫 번째는 class-validator패키지를 사용하고 유효성 검사에도 사용된다. 그리고 유효성 검사에 편리하게 만들어진 파이프다!

ValidationPipe

이 파이프는 class-validatorclass-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;
}

좋은 웹페이지 즐겨찾기