NestJS · 첫 앱

첫 NestJS 앱의 부트스트랩 단면

첫 애플리케이션에서 봐야 할 것은 hello world 문자열이 아니라, main.ts가 AppModule을 부트스트랩하고 controller route까지 연결되는 단면이다.

01

부트스트랩

main.ts에서 NestFactory.create(AppModule)로 DI 컨테이너와 HTTP adapter를 준비한다.

02

모듈 로딩

AppModule의 imports, controllers, providers가 애플리케이션 그래프를 만든다.

03

라우트 매핑

controller decorator와 method decorator가 HTTP method와 path를 만든다.

04

응답 반환

service가 만든 값을 controller가 반환하고 Nest가 HTTP 응답으로 직렬화한다.

NestFactory
앱 생성 root module을 기준으로 Nest application context 구성
adapter 선택 가능
listen
포트 오픈 HTTP 요청을 받을 서버를 시작
환경 변수 포트 사용
Controller
요청 계약 path, method, param, body를 정의
비즈니스 규칙은 service로
Provider
실행 의존성 constructor injection으로 service를 연결
module 등록 필요

진입 · 라우트 · 분리 점검

진입 앱이 어디서 시작되고 어떤 module을 기준으로 뜨는지 안다.
라우트 브라우저나 curl로 controller 응답을 확인할 수 있다.
분리 controller와 service 역할이 뒤섞이지 않는다.
종료 개발 서버 재시작과 포트 충돌을 처리할 수 있다.

부트스트랩 골격

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  await app.listen(process.env.PORT ?? 3000);
        overflow-wrap: break-word;
        word-break: keep-all;
      }