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.ts의 imports 배열에 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 형태의 응답 데이터를 확인할 수 있습니다.