NestJS 프로젝트 초기화 및 기본 라우팅 구현

NestJS 프레임워크 개요

NestJS는 TypeScript를 기본으로 하는 엔터프라이즈급 Node.js 프레임워크입니다. 객체 지향(OOP), 함수형(FP), 그리고 반응형(FRP) 프로그래밍의 장점을 융합하여 유지보수성과 확장성이 뛰어난 서버사이드 애플리케이션을 구축할 수 있게 해줍니다.

1. CLI 도구 설치

프로젝트 생성 및 관리를 위해 NestJS CLI를 시스템에 전역으로 설치합니다. Node.js와 패키지 매니저가 미리 설정되어 있어야 합니다.

npm install -g @nestjs/cli

2. 신규 프로젝트 스캐폴딩

CLI를 사용하여 새로운 백엔드 프로젝트의 기본 디렉토리 구조와 의존성을 자동으로 구성합니다.

nest new nestjs-backend

위 명령어를 실행하면 nestjs-backend 폴더가 생성되며 필요한 패키지들이 설치됩니다.

3. 라우팅 컨트롤러 구현

클라이언트의 HTTP 요청을 처리하기 위한 컨트롤러를 생성합니다. CLI의 generate 명령어를 활용하면 보일러플레이트 코드를 줄일 수 있습니다.

nest generate controller users

생성된 src/users.controller.ts 파일을 열어 다음과 같이 코드를 수정합니다.

import { Controller, Get } from '@nestjs/common';

@Controller('users')
export class UsersController {
  @Get('status')
  fetchSystemStatus() {
    return { 
      message: 'NestJS API is running',
      timestamp: new Date().toISOString()
    };
  }
}

4. 기능별 모듈 캡슐화

NestJS는 모듈 단위로 애플리케이션을 구조화합니다. 방금 만든 컨트롤러를 포함하는 모듈을 정의하여 의존성을 관리합니다.

import { Module } from '@nestjs/common';
import { UsersController } from './users.controller';

@Module({
  controllers: [UsersController],
})
export class UsersModule {}

참고: 애플리케이션이 이 모듈을 인식할 수 있도록 루트 모듈인 app.module.tsimports 배열에 UsersModule을 반드시 추가해야 합니다.

5. 애플리케이션 진입점 설정

서버를 구동하기 위한 부트스트랩 로직을 src/main.ts 파일에서 구성합니다. 전역 라우팅 접두사를 설정하고 포트를 지정할 수 있습니다.

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

async function initializeServer() {
  const appInstance = await NestFactory.create(AppModule);
  appInstance.setGlobalPrefix('api/v1');
  await appInstance.listen(4000);
}
initializeServer();

6. 서버 실행 및 API 테스트

개발 모드로 애플리케이션을 컴파일하고 실행합니다.

npm run start:dev

터미널에 서버가 성공적으로 바인딩되었다는 로그가 출력되면, 웹 브라우저나 API 클라이언트를 통해 http://localhost:4000/api/v1/users/status 경로로 GET 요청을 전송합니다. 설정한 JSON 형태의 응답 데이터를 확인할 수 있습니다.

태그: nestjs TypeScript Node.js backend Controller

6월 18일 22:28에 게시됨