본문 바로가기
NestJS

[NestJS] NestJS 시작하기

by 깅민 2025. 5. 28.

1. NestJS 시작하기

 

nest를 시작할 폴더로 와서 다음 명령어를 사용합니다.

그게 아니면 . 자리에 프로젝트 이름을 씁니다.

npx @nestjs/cli new .

 

npm run start:dev

서버를 시작하고 

 

http://localhost:3000/

 

에 접속하면

Hello World! 를 볼 수 있습니다.

 

2. 코드 분석

※ 데코레이터

https://gingmin.tistory.com/87

 

[TypeScript] 타입스크립트 데코레이터

1. 데코레이터 (Decorator)데코레이터는 클래스나 클래스 맴버(속성, 메서드 등)에 메타프로그래밍 기능을 추가하고 싶을 때 사용합니다. 데코레이터는 @데코레이터명 을 붙이면 사용할 수 있습니

gingmin.tistory.com

 

2-1. app.service.ts

import { Injectable } from '@nestjs/common';

@Injectable()
export class AppService {
  getHello(): string {
    return 'Hello World!';
  }
}

 

@Injectable() 데코레이터는 이 클래스가 의존성 주입을 받을 수 있는 Nest 서비스임을 나타냅니다.

이 서비스는 컨트롤러에서 호출됩니다.

 

2-2. app.controller.ts

import { Controller, Get } from '@nestjs/common';
import { AppService } from './app.service';

@Controller()
export class AppController {
  constructor(private readonly appService: AppService) {}

  @Get()
  getHello(): string {
    return this.appService.getHello();
  }
}

 

@controller() 는 이 클래스가 라우팅을 담당하는 컨트롤러임을 나타냅니다.

@Get() HTTP GET 요청을 처리할 메서드를 지정합니다. ( / 경로)

생성자에서 AppService를 의존성 주입으로 받아 사용합니다.

getHello() 메서드는 서비스의 getHello() 메서드를 호출하여 결과를 반환합니다.

 

2-3. app.module.ts

import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';

@Module({
  imports: [],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}

 

@Module() 데코레이터는 Nest에서 모든 애플리케이션은 모듈로 구성된다는 구조의 핵심입니다.

controllers 배열은 이 모듈에서 사용하는 컨트롤러 목록입니다.

providers 배열은 이 모듈에서 사용할 서비스(또는 의존성 주입 대상) 목록입니다.

AppModule 은 Nest 애플리케이션의 시작점이자 루트 모듈입니다.

 

2-4. main.ts

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

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

 

NestFactory: NestJS 애플리케이션 인스턴스를 생성하는 팩토리 클래스입니다.

AppModule: 애플리케이션의 루트 모듈입니다. 이 모듈에 컨트롤러, 서비스, 다른 모듈들이 등록되어 있습니다.

 

NestFactory.create(AppModule): AppModule을 기반으로 Nest 애플리케이션을 생성합니다.

내부적으로 의존성 주입 컨테이너를 구성하고 모든 컴포넌트를 초기화합니다.

 

app.listen(...): 애플리케이션이 HTTP 서버로 동작을 시작합니다.

process.env.PORT 를 먼저 시도하고, 설정되어 있지 않으면 기본 포트를 사용합니다.

 

2-5. 코드 흐름

  • 브라우저에서 GET / 요청을 보냄
  • AppController의 @Get() 메서드가 이 요청을 처리
  • AppController는 AppService에 있는 getHello()를 호출
  • AppService는 "Hello World!" 문자열을 반환
  • 컨트롤러가 이 문자열을 클라이언트에게 응답

 

'NestJS' 카테고리의 다른 글

[NestJS] NestJS WSL 배포하기  (0) 2025.05.29
[NestJS] NestJS CORS  (0) 2025.05.29
[NestJS] NestJS DB연결하기  (1) 2025.05.28