Nest.js

김민석·2026년 3월 11일

Nest js

효율적이고 확장 가능한 node.js 서버 측 애플리케이션을 구축하기 위한 프레임워크

Nest js 구성

Express(기본값)와 같은 강력한 HTTP 서버 프레임워크를 사용하며 선택적으로 Fastify로 구성할 수 있음.

Nest js CLI로 Nest js 시작

npm i -g @nestjs/cli
nest new project-name

Nest js 기본 구조

  • eslintrc.js : 타입스크립트 가이드라인 및 문법 오류 알려줌
  • pretttierrc : 코드 포맷터 역할
  • nest-cli.json : nest 프로젝트 특정한 설정하는 파일
  • tsconfig.json : 타입스크립트 컴파일 설정

Nest js 기본 생성 파일

  • app.controller.ts : 단일 경로를 가진 기본 컨트롤러입니다.
  • app.controller.spec.ts : 컨트롤러에 대한 단위 테스트입니다.
  • app.module.ts : 애플리케이션의 루트 모듈입니다.
  • app.service.ts : 단일 메서드를 가진 기본 서비스입니다.
  • main.ts : NestFactoryNest 애플리케이션 인스턴스를 생성하는 핵심 함수를 사용하는 애플리케이션의 진입 파일입니다.

Nest js 로직 흐름

Nest js 모듈

@Module() 데코레이터로 주석이 달린 클래스.
각 애플리케이션은 최소 하나의 모듈이 필요
모듈은 기본적으로 싱글톤으로 여러 모듈가느이 쉽게 공유할 수 있음.

모듈 생성하기

nest g module boards

하면 모듈 저절로 생성되며 app.module.ts 에 module 저절로 추가됨.

컨트롤러

들어오는 요청을 처리 및 클라이언트에 응답을 반환해줌.

@Controller 데코레이터로 정의

handler

핸들러는 @Get, @Post,@Delete 등 메서드에 붙여주는 것

@Get()
  findAll(): string {
    return 'This action returns all cats';
  }

컨트롤러 생성

nest g controller boards --no-spec
cli 입력 시 저절로 module에 포함됨.

import { Module } from '@nestjs/common';
import { BoardsModule } from './boards/boards.module';
import { BoardsController } from './boards/boards.controller';


@Module({
  imports: [BoardsModule],
  controllers: [BoardsController]
})
export class AppModule { }

Provider

프로바이더는 Nest의 기본개념.
서비스,리포지토리,팩토리 등 프로바이더로 취급될 수 있음. 객체는 서로 다양한 관게를 만들 수 있으며 객체의 인스턴스를 연결하는 기능은 Nest 런타임에 위임될 수 있음.

Service

@Injectable 데코레이터로 감싸져 제공.
이 서비스는 애플리케이션 전체에서 사용가능.

Service Controller에서 사용하기

@Controller('cats')
export class CatsController {
  constructor(private catsService: CatsService) {}

  @Post()
  async create(@Body() createCatDto: CreateCatDto) {
    this.catsService.create(createCatDto);
  }

  @Get()
  async findAll(): Promise<Cat[]> {
    return this.catsService.findAll();
  }
}

위와 같이 constructor 에 service를 주입해 서비스에 있는 메서드를 사용할 수 있음.

Service 만들기

서비스 안에서는 주로 데이터베이스 관련 로직을 처리함.즉 주요 로직 처리
nest g service boards --no-spec
module에 provider 로 service가 자동으로 추가됨.

profile
나만의 기록장

0개의 댓글