Node.js에 기반을 둔 웹 API 프레임워크. 기본적으로 Express를 래핑하여 동작.
NestJS는 DB, ORM, Configuration, 유효성 검사 등 수많은 기본 기능을 기본 제공한다.
NestJS는 Node.js를 기반으로 하기에 Node.js공식 페이지를 참고해 맞는 버전을 설치한다.
$ npm i -g @nestjs/cli
$ nest new [project-name]
[project-name]대신 본인의 프로젝트 이름 입력
초기설정할때 참고하면 좋은 레포
https://github.com/nestjs/typescript-starter
: main.ts가 모든걸 시작. 이름 바꾸지 말것.
main.ts는 bootsrtap라는 이름의 함수를 가지고 있는데 이 기본 함수 이름은 아무거나 바꿔도 상관 없다.
: 데코레이터는 클래스에 함수기능을 추가 할 수 있다.
: 앱모듈을 일종의 루트모듈
모듈 = 장고의 app: 한가지 기능을 하는 앱
ex) 인증 담당 기능 -> users모듈
: 그래서 컨트롤러에서 Request, Response 객체가 필요하다면 사용가능하다.
하지만 req나 res같은 Express객체를 직접적으로 사용하는게 좋은 방법은 아니다.
: 한개의 요소가 한가지 기능은 꼭 책임져야 함
: express의 라우터 같은 존재
: 컨트롤러는 그냥 url을 가져오는 역할과 그에 해당하는 function(이 function이 service에 있음)을 실행할 뿐
: 원래 App Module은 App Controllers와 App providers를 갖고 있어야 한다.
앱을 만들때는 모듈별로 구분하여야 좋음.
: /user?id=111
에서 123 받음
: /users/222
에서 222 받음
어떤 resource를 식별하고 싶으면 Param
정렬이나 필터링을 하고 싶으면 Query 사용
: 데이터 전송 객체로 코드를 더 간결하게 만들 수 있도록 해준다. 그리고 NestJS가 들어오는 쿼리에 대해 유효성 검사를 할 수 있게 해준다.
npm i class-validator
, npm i class-transformer
설치whitelist: true
: 아무 데코레이터가 없는 어느 property의 object를 걸러낸다.forbidNonWhiteListed: true
: 이상한 요청을하면 리퀘스트 자체를 막아버린다.transform: true
: true유저들이 보낸걸 원하는 실제 타입으로 변환url로 보내는 쿼리문은 다 스트링
: 자바스크립트 테스팅 npm 패키지로 파일중 .spec.ts
확장자인게 테스팅을 포함하는 파일
: app.useGlobalPipes
이런거 적용시켜줘야 하는것 잊지 말자