[NestJs]cli 및 pipe

코드깎는 노인·2022년 1월 8일
0

cli

npm i -g @nestjs/cli : nestjs cli 설치
nest new toy : toy라는 이름의 기본 템플릿 생성
nest generate module messages : messages 모듈 생성하기
nest generate controller messages/messages --flat: src/messages폴더에 messages컨트롤러 생성및 messages모듈에 컨트롤러 자동 추가됨.--flat옵션은 controllers라는 폴더 생성안하고 바로 파일 생성하는 옵션.

Pipe

DTO란?

DTO(Data transfer Object)는 nestjs에만 있는것이 아니다.DTO의 목적은 요청에 대한 데이터의 형식을 보여주기 위함이다.DTO자체에 기능은 없고 프로퍼티가 나열된 단순 클래스이다 .

class-transformer

class-transformers는 객체를 클래스로 변환시켜준다.

class-validator

class-validator는 객체프로퍼티의 타입을 체크한다.

Validation Pipe 원리

class-transformer가 body객체를 DTO클래스의 인스턴스로 변환 => class-validator가 인스턴스의 유효성을 체크 =>에러시 에러응답반환,정상일시 request handler로 body전달.

데코레이터 타입이 유지되는 원리

모든 타입스크립트 파일은 자바스크립트로 변환되며 기본적으로 데코레이터의 타입은 자바스크립트로 전환시 생략되지만 tsconfig의 "emitDecoratorMetadata": true ,"experimentalDecorators": true옵션설정을 통해 타입이 유지된다.

profile
내가 볼려고 만든 블로그

0개의 댓글