본문 바로가기
Nest

[Nest] NestJs 구조

by chu_dw 2024. 1. 29.

NestJs 의 기본구조에 대해 정리하겠다.

진행하는 프로젝트를 예시로 정리해볼 것이다. 현재 프로젝트의 구조는 아래와 같다.

 

main.ts

Nestjs의 진입점으로 Nestjs를 시작하고 필요한 설정을 업로드한다.

NestFactory는 appModule을 읽어서 NestApplication 인스턴스를 생성한다.

 

NestFactory는 NestFactory.create로 main.ts에서 호출된다.

NestFactory의 상세 동작에 대해선 따로 정리하겠다.

 

 

 

module

nestjs에서 module은 애플리케이션의 기능을 그룹화하고 코드를 구성하는데 사용되는 요소이다.

@Module 어노테이션으로 생성되고 nestjs 애플리케이션은 하나 이상의 모듈로 구성되어 있다.

모듈은 비슷한 기능을 가진 관련된 컨트롤러, 서비스, 프로바이더 등 관련된 코드를 묶어 관리한다.

위 프로젝트를 보면 기본 root 모듈인 app.module이 있고 각 기능별로 postbox.module, letters.module이 있다.

user모듈을 정의 모듈의 예시이다.

위처럼 모듈에선 현재 모듈에서 사용할 controller를 지정해 주고 providers를 통해 현재 모듈에 사용할

provider를 지정한다. 위처럼 지정해 주면 UserController에서 UserService를 주입받아 사용할 수 있다.

(의존성 주입에 대해서 스프링 할 때 정리하였기 때문에 생략하겠다.)

 

이렇게 만들어진 모듈들은 Root 모듈인 appModule에 import 해준다.

(Orm으로 TypeOrm을 사용했기 때문에 TypeOrmodule도 추가해 준 것이다.)

 

 

NestJs  요청 처리 순서

1. Http 요청이 들어오면 라우터를 통해 해당 요청을 처리한 컨트롤러 및 핸들러를 찾음

2. 요청이 특정 컨트롤러에 도달하기 전에 middleware와 guard에 전처리 작업

3. 요청 컨트롤러로 전달 후 비즈니스 로직 실행

4. 처리된 요청 응답을 생성하여 클라이언트에 반환

'Nest' 카테고리의 다른 글

[Nest] nest guard  (0) 2024.02.29
[Nest] 데코레이터, 메타데이터  (0) 2024.02.26
[Nest] NodeJs Event Loop  (0) 2024.01.26
[Nest] Node.js 특징 (single Thread, Nonblocking)  (0) 2024.01.15
[NestJS] NestJs란?  (0) 2024.01.14