본문 바로가기

NestJS

NestJS의 프로젝트 구조

 NestJS는 모듈화를 통해 프로젝트를 구성한다. 가장 위에 있는 main.ts에서 app.module을 호출하는 것으로 프로그램이 시작된다. app.module은 또 다른 모듈들을 import 하게 된다. 

 

 각 모듈은 기본적으로 controllerprovider로 구성된다. 

controller는 클라이언트에서 보낸 HTTP 요청을 받아 라우팅 하며, 프로바이더에게 전달한다. 또한, 프로바이더에게 받은 응답을 다시 클라이언트에게 반환한다. 자세한 내용은 다른 포스팅에서 다루겠다.

 

 provider는 애플리케이션에서 사용되는 서비스, 데이터베이스 이용, 외부 API 호출, 로깅 등의 기능을 수행한다. 핵심 비즈니스 로직을 구현하고, controller에 필요한 데이터와 기능을 제공하는 역할을 한다. 자세한 내용은 다른 포스팅에서 다루겠다.

 

 

 이 외에도 entity, DTO 등이 있다.

 entity는 데이터베이스와의 상호작용을 위해 사용하는 클래스로, 데이터베이스의 테이블에 해당하는 데이터 모델을 정의한다. 주로 ORM을 사용하기 위해 사용되며, 데이터의 구조와 제약 조건을 정의한다. 이런 식이다.

import { Entity, Column, PrimaryGeneratedColumn } from 'typeorm';

@Entity()
export class User {
  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  name: string;

  @Column()
  email: string;
}

 

 

 DTO는 데이터의 전송을 위한 객체로, 클라이언트와 서버 간의 데이터 통신을 위해 사용된다. 데이터를 전송하는데 필요한 속성을 정의하는 클래스로, 보통 HTTP 요청 또는 응답에서 데이터를 전송하기 위해 사용된다. 데이터의 구조를 정의하고, 데이터의 유효성을 검사하는 등의 역할을 수행한다.

export class CreateUserDto {
  name: string;
  email: string;
  password: string;
}

 

 

 그림으로 간단히 표현하자면 다음과 같다.

 

 

'NestJS' 카테고리의 다른 글

NestJS에서 openAI API 연동으로 ChatGPT 활용하기  (0) 2023.08.30
Throttler를 사용한 Rate Limiting  (0) 2023.08.24
Provider  (0) 2023.07.24
Controller  (0) 2023.07.20
NestJS 소개  (0) 2023.04.15