[NestJS] NestJS First steps

cabbage·2023년 1월 28일
0

NestJS

목록 보기
2/17
post-thumbnail

NestJS First steps

Setup

Nest 프로젝트를 생성하면 node modules와 몇 가지 boilerplate 파일들이 설치된다. 그리고 src/ 디렉토리가 생성되는데, 이 디렉토리는 몇 가지 핵심 파일로 구성된다.

핵심 파일들의 개요는 아래와 같다.

  • app.controller.spec.ts
    • 컨트롤러의 유닛 테스트
  • app.controller.ts
    • 싱글 라우트를 갖는 기본 컨트롤러
  • app.module.ts
    • 애플리케이션의 루트 모듈
  • app.service.ts
    • 단일 메서드를 갖는 기본 서비스
  • main.ts
    • 애플리케이션의 진입점이 되는 파일로, NestFactory 핵심 함수를 사용해서 Nest 애플리케이션 인스턴스를 생성한다.

main.ts 파일은 비동기 함수를 포함하는데, 이 함수는 애플리케이션을 bootstrap한다.

import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  await app.listen(3000);
}
bootstrap();

NestFactory 클래스를 사용해 Nest 애플리케이션 인스턴스를 생성한다. NestFactory 클래스는 애플리케이션 인스턴스를 생성하기 위한 몇 가지 정적 메서드를 노출하고 있다. create() 메서드는 INestApplication 인터페이스를 충족하는 애플리케이션 객체를 반환한다.

main.ts 예제에서는, 애플리케이션이 HTTP 요청을 기다리게 하도록 HTTP 리스너를 시작한다.

Platform

Nest는 플랫폼에 구애 받지 않는 프레임워크를 지향한다. 플랫폼 독립은 개발자가 여러 타입의 애플리케이션에서 사용할 수 있는, 재사용 가능한 로직들을 생성할 수 있게 해준다. Nest는 어떤 Node HTTP 프레임워크와도 잘 작동한다. 기본적으로 expressfastify HTTP 플랫폼을 지원한다.

  • platform-express
  • platform-fastify

어떤 플랫폼을 선택하던지, 선택된 플랫폼은 자신만의 애플리케이션 인터페이스를 노출시킨다. 각각 NestExpressApplicationNestFastifyApplication 이 있다.

아래 코드처럼 NestFactory.create() 메서드에 타입을 전달하면, app 객체는 플랫폼에 맞는 메서드를 갖게 된다.

const app = await NestFactory.create<NestExpressApplication>(AppModule);

Running the application

아래 명령을 실행하면 애플리케이션이 HTTP 요청을 기다리기 시작한다.

npm run start

이 명령은 애플리케이션을 실행한다. 애플리케이션은 src/main.ts 파일에서 정의된 포트에서 HTTP 요청을 기다리는 HTTP 서버를 포함하고 있다.

파일 변화를 감지하려면, 아래 명령을 사용해 애플리케이션을 실행하면 된다.

npm run start:dev

이 명령은 파일 변화를 감지해 자동으로 서버를 재컴파일하고 재시작한다.

참고

profile
캐비지 개발 블로그입니다. :)

0개의 댓글