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라는 폴더 생성안하고 바로 파일 생성하는 옵션.
DTO(Data transfer Object)는 nestjs에만 있는것이 아니다.DTO의 목적은 요청에 대한 데이터의 형식을 보여주기 위함이다.DTO자체에 기능은 없고 프로퍼티가 나열된 단순 클래스이다 .
class-transformers는 객체를 클래스로 변환시켜준다.
class-validator는 객체프로퍼티의 타입을 체크한다.
class-transformer가 body객체를 DTO클래스의 인스턴스로 변환 => class-validator가 인스턴스의 유효성을 체크 =>에러시 에러응답반환,정상일시 request handler로 body전달.
모든 타입스크립트 파일은 자바스크립트로 변환되며 기본적으로 데코레이터의 타입은 자바스크립트로 전환시 생략되지만 tsconfig의 "emitDecoratorMetadata": true
,"experimentalDecorators": true
옵션설정을 통해 타입이 유지된다.