기본설명
- Nest는 타입스크립트와 순수 자바스크립트 모두와 호환 됨
- 순수 자바스크립트와 함께 사용하려면 Babel 컴파일러가 필요함
- 25년 12월 기준 Node.js(20) 이상의 버전이 설치되어 있는지 확인이 필요
디렉토리 확인하기

이전에 01번 포스트에서 정상적으로 진행했다면 보일러플레이트가 정상적으로 설치되었을 것이다. 그리고 src 폴더를 열어본다.
보일러 플레이트란?
컴퓨터 프로그래밍에서 "보일러플레이트"는 각종 프로젝트의 기본이 되는, 재사용될만한 소스 코드 기반을 의미합니다. 프로젝트를 시작할 때마다 기본이 될만한 세팅들을 매번 넣어준다면 초기 준비 시간이 많이 소요될 수 있기 때문에, 자주 사용되는 "상용구 코드"를 미리 프로젝트화 하여 제작해두는 것입니다. 여러 회사들은 각자 사내에서 주요 기술이라고 여기는 것들을 모아둔 보일러플레이트를 만들고, 그 코드를 많은 프로젝트들의 시작점으로 사용합니다.
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라는 기능을 사용하여 nest 애플리케이션 인스턴스를 생성하는 애플리케이션의 엔트리 파일
- main.ts 파일은 NestJs의 진입점을 담당하는 역할
- bootstrap() 함수가 async로 선언된 것을 볼 수 있는데, 이것은 서버가 정상적으로 구동되면 listen() 함수가 Promise 객체를 반환하기 때문에 await를 사용한 것임
controller.ts는 무엇인가??

- 컨트롤러의 목적은 애플리케이션의 특정 요청을 처리하는 것임
- 컨트롤러는 여러 경로를 가지고, 각 경로는 서로 다른 작업을 수행함
nest g controller cats
위의 명령어를 사용하여 컨트롤러를 생성해보자. 생성을 하게되면 하단의 사진과 같이 생성된 파일을 확인할 수 있다.

import { Controller, Get } from '@nestjs/common';
@Controller('cats')
export class CatsController {
@Get()
findAll() {
return 'This action returns all cats';
}
}
공식문서의 예제코드이다. 컨트롤러 파일에 위의 코드와 같이 수정을 해보자. 그렇다면 /cats 의 경로로 접속하면 문자열이 출력될 것이다. 컨트롤러에 대한 자세한 내용은 뒤에 작성할 포스트에 함께 정리하고자 한다.

service.ts 는 무엇인가??

- NestJs에서 서비스는 비즈니스 로직을 담당하는 역할을 함
- 계산이나 DB접근 등의 로직을 서비스에서 수행함
nest g service cats
위의 명령어를 실행하여 서비스 파일을 만들어보자. 정상적으로 생성이 되었다면 하단의 코드를 복사하여 cats폴더 안에 있는 service.ts에 붙여넣기를 해보자.
import { Injectable } from '@nestjs/common';
@Injectable()
export class CatsService {
getFindAllCats(): string {
return 'find cats 10';
}
}
그리고 다시 컨트롤러로 돌아가서 좀전에 만든 cats폴더에 service.ts를 생성자를 통해 주입을 해보자.
import { Controller, Get } from '@nestjs/common';
import { CatsService } from './cats.service';
@Controller('cats')
export class CatsController {
constructor(private catsService: CatsService) {} // 이 부분이 추가 됨
@Get()
findAll() {
return 'This action returns all cats';
}
@Get('find')
findAllCats() {
// 여기서 주입된 catService를 사용
return this.catsService.getFindAllCats();
}
}
이제 다시 서버를 켠 후 localhost:3000/cats/find 경로로 접속해보자. 정상적으로 코드가 입력이 되었다면 아래의 이미지와 같이 결과가 출력이 된다.

현재까지 nestjs를 정리하면서 이전에 사용하던 SpringBoot와 매우 비슷하여 신기하기도 하면서 매우 만족하고 있는부분이다.
module.ts는 무엇인가??

- @Module(). 이 데코레이터는 Nest가 애플리케이션 구조를 효율적으로 구성하고 관리하는 데 사용하는 메타데이터를 제공
- 모든 Nest 애플리케이션에는 최소 하나의 모듈이 있음
- 대부분의 애플리케이션에는 여러 모듈이 있고, 각 모듈은 밀접하게 관련된 기능 집합을 캡슐화 함
이전에 cats에 관련된 controller와 service를 만든것을 생각해보자. 이 둘은 밀접하게 관련되어 있으며 동일한 애플리케이션 도메인을 담당하고 있다. 따라서 이것들을 기능 모듈로 그룹화하는 것이 좋다.
nest g module cats
위의 명령어를 사용하여 모듈을 만들어보자. 그렇다면 기본적으로 빈 템플릿만 나온다.
- 컨트롤러
- 서비스
- 모듈
위의 순서로 만들었기 때문에 빈 템플릿 코드만 나오는데 이제는 우리가 이것을 하단의 코드와 같이 수정을 해준다.
여기서 헷갈리면 안되는게 현재는 cats 폴더안에 있는 module.ts를 작업하고 있다.
import { Module } from '@nestjs/common';
import { CatsController } from './cats.controller';
import { CatsService } from './cats.service';
@Module({
controllers: [CatsController],
providers: [CatsService],
})
export class CatsModule {}
그리고 제일 루트경로에 있는 app의 모듈을 한번 열어서 하단의 코드와 같이 수정을 해주자
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { CatsController } from './cats/cats.controller';
import { CatsService } from './cats/cats.service';
import { CatsModule } from './cats/cats.module';
// 기존 코드
// @Module({
// imports: [],
// controllers: [AppController,CatsController],
// providers: [AppService,CatsService],
// })
@Module({
imports: [CatsModule],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
이렇게 되면 앱 모듈에 있는 controllers와 providers에 Cats관련된 파일들이 빠지게 되고 imports의 CatsModule로 한꺼번에 관리가 되는것을 볼 수 있다. 그리고 이제 localhost:3000/cats/find 경로로 들어가게 되면 정상적으로 출력이 되는것을 볼 수 있다.

참고
[초보자의 눈으로 보는 NestJS] 2. NestJS 보일러플레이트 설치
2. NestJS 보일러플레이트 설치요약이전 글에서는 [초보자의 눈으로 보는 NestJS] 1. NestJS 프레임워크1. NestJS 프레임워크 요약 본 글에서는 NestJS 프레임워크에 대해서 소개합니다. NestJS 보일러플레
ts01.tistory.com
[Nest Js] Nest Js 공식 문서 파헤치기 - 시작하기
트리스티가 Nest Js를 공부하며 남긴 기록입니다. 틀린 내용은 언제든지 말씀해주세요 ~! 📣 Nest Js 시작하기 Nest Js를 시작하는 것은 정말 간단합니다. 먼저, npm이 설치되어 있는 상태에서 nest cli를
tristy.tistory.com
https://docs.nestjs.com/first-steps
Documentation | NestJS - A progressive Node.js framework
Nest is a framework for building efficient, scalable Node.js server-side applications. It uses progressive JavaScript, is built with TypeScript and combines elements of OOP (Object Oriented Programming), FP (Functional Programming), and FRP (Functional Rea
docs.nestjs.com
'NestJS > 개념과 구조 정리' 카테고리의 다른 글
| NestJS로 효율적인 백엔드 개발하기 (06) - 미들웨어(클래스형, 함수형) (0) | 2025.12.12 |
|---|---|
| NestJS로 효율적인 백엔드 개발하기 (05) - 모듈에 대해 알아보자 (0) | 2025.12.12 |
| NestJS로 효율적인 백엔드 개발하기 (04) - 서비스 사용하기 (0) | 2025.12.11 |
| NestJS로 효율적인 백엔드 개발하기 (03) - 컨트롤러 사용하기 (0) | 2025.12.10 |
| NestJS로 효율적인 백엔드 개발하기 (01) - nest/cli 설치 (0) | 2025.12.09 |
