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 |