[NestJS] 개념 정리 및 설치 방법

minsu·2025년 1월 8일

NestJS

효율적이고 확장 가능한 Node.js 서버 사이드 애플리케이션을 구축하기 위한 프레임워크이다.
Node.js에 기반을 둔 웹 API 프레임워크로써 Express 또는 Fastify 프레임워크를 래핑하여 동작한다.


Document

https://docs.nestjs.com/


NestJS 설치 방법

  1. Node.js 설치 - 설치 방법은 Node.js 설치 방법 페이지 참조
    https://velog.io/@cod_kms/Node.js-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8-%EC%84%A4%EC%B9%98-%EB%B0%A9%EB%B2%95-MacOS

  2. NestJS CLI 설치
    NestCLI란 Nest Application의 초기화, 개발 및 유지 관리를 도와주는 인터페이스 도구

npm i -g @nestjs/cli
i: install 명령어의 약자
-g: 컴퓨터의 글로벌 환경에 설치하겠다는 뜻으로, 모든 디렉토리에서 참조할 수 있음

npm root -g: 글로벌 환경에서 패키지가 설치되는 경로 확인 명령어

* npm 에러 발생시 관리자 권한으로 설치: sudo npm i -g @nestjs/cli
  1. 프로젝트 생성 방법
mkdir 폴더명
cd 폴더명
nest new project-name

보일러플레이트 nest new project-name 설명

src 폴더

-> app.controller.spec.ts
   컨트롤러에 대한 단위테스트
   
-> app.controller.ts
   유저와 통신하고 서비스의 패턴을 정의하는 컨트롤러
   
-> app.module.ts
   Application의 실행 루트 모듈
   
-> app.service.ts
  실제 로직을 구현하는 기본 서비스
  
-> main.ts
   NestJS Application 인스턴스를 생성하는 메인

.eslintrc.js

개발자들이 특정한 규칙을 가지고 코드를 깔끔하게 짤 수 있도록 도와주는 라이브러리
타입 스크립트를 쓰는 가이드라인 제시
문법에 오류가 나면 알려주는 역할

.gitignore

Git에서 특정 파일이나 디렉토리를 버전 관리 대상에서 제외할 때 사용하는 파일
이 파일에 정의된 패턴에 해당하는 파일이나 폴더는 Git이 추적하지 않으며, 커밋 대상에서 제외됨

.prettierrc

주로 코드 형식을 맞추는데 사용하며 에러 찾는 것이 아닌 코드 포멧터 역할을 함
작은 따옴표(’)를 사용할지 큰 따옴표(”)를 사용할지, Indent 값을 2로 줄지 4로 줄지 등등

.nest-cli.json

nest 프로젝트를 위해 특정한 설정을 할 수 있는 json 파일

.package.json

프로젝트 이름, 버전, 설명, 작성한 사람 명시
bulid: 운영 환경을 위한 빌드
format: 린트 에러가 났을시 수정
start: 앱 시작

.tsconfig.json

어떻게 타입스크립트를 컴파일 할 지 설정하는 json 파일

.tsconfig.build.json

tsconfig.json의 연장선상 파일
build할 때 필요한 설정들 excludes에서는 빌드할 때 필요없는 파일들 명시


애플리케이션 실행 명령어

npm run start:dev

Controller vs. Resolver

Controller

  • 프로토콜: HTTP (RESTful API)
  • 데코레이터: @Controller(), @Get(), @Post() 등
  • 처리 대상: URL 경로 및 HTTP 메서드
  • 응답 대상: JSON, HTML 등
  • 라우팅 방식: 명시적 라우팅 (e.g., /users/:id)

Resolver

  • 프로토콜: GraphQL
  • 데코레이터: @Resolver(), @Query(), @Mutation() 등
  • 처리 대상: GraphQL 타입과 작업(Query/Mutation 등)
  • 응답 대상: GraphQL 스키마에 따른 응답 형식
  • 라우팅 방식: GraphQL 스키마 기반의 요청 매핑

선택 기준

RESTful API를 설계중이라면 Controller 사용

  • HTTP 기반의 요청/응답 패턴과 RESTful 엔드포인트가 필요할 때 적합

GraphQL API를 설계중이라면 Resolver 사용

  • GraphQL 스키마를 기반으로 동적이고 유연한 데이터 쿼리 및 변형이 필요할 때 적합

NestJS의 GraphQL 사용

NestJS에서 기본적으로 Controller를 사용해 RESTful API를 구현한다.
GraphQL Resolver를 사용하려면 추가 설정이 필요하다.

npm install @nestjs/graphql apollo-server-express graphql
// module.ts
import { Module } from '@nestjs/common';

@Module({
  imports: [
  ],
  providers: [
  ],
  exports: [
  ],
})
export class UserModule { }
profile
3년차 백엔드 개발자

0개의 댓글