NestJS || Pipe

Alpha, Orderly·2023년 9월 18일
0

nestJS

목록 보기
3/8

요청을 검증하는 역할을 한다.


dto

  • 요청/응답시 사용할 데이터의 종류를 지정한다.
  • 모듈 폴더에 따로 dtos 폴더를 두고 사용한다.
  • 이름.dto.ts 로 이름짓는다.
  • 내부는 class를 통해 타입을 지정한다.
export class CreateMessageDto {
    content: string;
}

전역 요청을 검증하는 Validation 추가하기

  • 값의 검증을 위해선 class-validator, class-transformer 라이브러리를 필요로 한다.
    • npm install class-validator
    • npm install class-transformer
    • 이들을 바탕으로 완성된 dto
  export class CreateMessageDto {
    @IsString() // 문자열 여부를 확인한다.
    content: string;
    }

Class-transformer

  • 요청의 json body를 받아 class 객체로 변환한다.

Class-validator

  • dto에 사용, 받아온 class가 올바른지 검증한다.
    • @isString() 등 사용
  • 검증대상은 컨트롤러에서 바디로 받아오기로 한 타입을 통해 결정한다.
  • 검증 실패시 바로 실패를 리턴한다.

자바스크립트로 변환되면 타입이 사라지는데 검증이 가능한 이유

  • tsconfig에서 관련 메타데이터를 남겨놓도록 했기 때문이다.

절차

  1. main.ts 에 ValidationPipe를 전역으로 추가한다.
  2. 컨트롤러에서 parameter로 받아온 body의 type을 dto로 설정한다.
async function bootstrap() {
  const app = await NestFactory.create(MessagesModule);
  // 이부분을 추가한다.
  app.useGlobalPipes(
    new ValidationPipe()
  )
  app.listen(3000);
}
bootstrap();
  • ValidationPipe() 의 소괄호에 object 형식으로 설정을 작성할수 있다.

속성 리스트

  • whitelist : boolean
    • true일시 입력에서 dto에 있는것을 제외하고 나머지는 다 쳐냄

profile
만능 컴덕후 겸 번지 팬

0개의 댓글