본문 바로가기
개발공부/NestJS

[노마드 코더 NestJS로 API 만들기] 2 DTO, Validation

by bzerome240 2023. 8. 13.

 

 

파이프

요청이 라우터 핸들러로 전달되기 전에 요청 객체를 변환할 수 있는 것.

  • ValidationPipe
  • ParseIntPipe / ParseBoolPipe / ParseArrayPipe / ParseUUIDPipe : 전달된 인수의 타입을 검사
  • DefaultValuePipe : 쿼리 매개변수가 생략된 경우 기본값 설정

 

 


 

유효성 검사 라이브러리 class-validator, class-transformer 설치하기

npm i class-validator class-transformer

 

mapped-types 설치하기

npm i mapped-types

 

 

main.ts 에 유효성 검사 pipe 생성하기 

transform: request로 들어온 파라미터를 원하는 타입으로 변경해준다. true로 해야한다.

app.useGlobalPipes(new ValidationPipe({
  whitelist: true,
  forbidNonWhitelisted: true,
  transform: true
}));

 

 

dto > create-movie.dto.ts 생성하기

export class CreateMovieDto {
  @IsString()
  readonly title: string;
  @IsNumber()
  readonly year: number;
  @IsOptional()
  @IsString({each: true})
  readonly genres: string[];
}

 

dto > update-movie.dto.ts

필수는 아닌 파라미터

export class UpdateMovieDto extends PartialType(CreateMovieDto) {}

 

controller 에서 요청이들어오면 dto 타입으로 체크하면 된다.

유효성 검사기 추가를함으로써 controller, service 작성이 편리해졌다.

 

 

728x90
반응형

댓글