NestJS Docs를 보고 번역을 해보면서 내가 NestJS에 대해서 대충 알고 있거나 몰랐던 것들에 대해서 개념정리를 해보려고한다.
SetUp을 할 때, Nest CLI를 사용하면 새 프로젝트를 세팅하는 것이 매우 간단해진다.
npm (node package manager) 이 설치된 상태에서 본인의 OS 터미널에서 아래와 같은 명령어를 입력하여 새로운 Nest 프로젝트를 생성할 수 있다.
$ npm i -g nestjs/cli
$ nest new project-name
Typescript의 더 엄격한 기능으로 프로젝트를 생성하려면
--stric
플래그를nest new
명령에 전달한다.
위 명령어를 입력하면 project-name
directroy가 생성되고, 노드 모듈 및 기타 몇 가지 상용구 파일이 설치되면 src/directory
가 생성되어 코어 파일로 채워진다.
src
|-app.controller.spec.ts
|-app.controller.ts
|-app.module.ts
|-app.service.ts
|-main.ts
각 코어 파일에 대한 간략한 개념은 아래와 같다.
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);
}
Nest 어플리케이션 인스턴스를 생성하기 위해 핵심인 NestFactory 클래스를 사용한다. NestFactory는 어플리케이션 인스턴스 생성을 허용하는 몇 가지 정적 메서드를 노출한다.
create()
메서드는 INestApplication
인터페이스를 충족하는 어플리케이션 객체를 반환한다. 이 객체는 일련의 메서드를 제공한다.
위 main.ts
예제에서는 어플리케이션이 인바운드 HTTP 요청을 기다리도록 하는 HTTP 수신기를 시작하기만 하면 된다.
인바운드
- 인바운드 트래픽은 네트워크에 들어오는 정보
- 메시지가 클라이언트에서 서버로 향하는 것
ex) 첨부파일을 서버에 저장할 때 (업로드)
아웃바운드
- 아웃바운드 트래픽은 네트워크에서 나가는 정보
- 클라이언트의 요청을 처리하고 메시지가 서버에서 클라이언트로 다시 향하는 것
ex) 첨부파일을 다운로드 할 때