프로그래밍(Basic)/NestJS

[바미] Nest 모듈(Module) 이해하기

Bami 2024. 2. 27. 07:09
728x90
반응형

 

Nest 소개

Nest? Nest.js는 TypeScript로 작성된 프레임워크로, Node.js를 기반으로한 서버 사이드 애플리케이션을 구축하기 위한 도구입니다. Angular와 비슷한 구조와 기능을 제공하여 Angular 사용자들에게 친숙하

codesk.tistory.com

앞서 소개글에도 설명했듯이 Nest.js에서 모듈은 애플리케이션의 기능을 나타내는 단위입니다.

간단한 예제 코드를 통해 각 모듈의 컨트롤러, 서비스, 프로바이더 등이 어떻게 구성되어 있는 지 확인하는 시간을 가져보도록 하겠습니다.

 

예제 코드

준비 사항

예제 코드에 들어가기 전에 프로젝트를 Nest 프로젝트를 생성해봅시다.

nest new Nest-project

위 명령어를 터미널 창에 입력하면 아래와 같은 구조를 가지게 됩니다.

Nest-project/
├── src/
│   ├── app.controller.spec.ts
│   ├── app.controller.ts
│   ├── app.module.ts
│   ├── app.service.spec.ts
│   ├── app.service.ts
├── node_modules/
├── package.json
├── tsconfig.json
└── tslint.json

 

이제 준비는 끝났습니다! 간단하게 "Hello Bami!" 를 출력하는 Nest 프로젝트를 만들어보죠!


app.module.ts

import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';

@Module({
  imports: [],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}

 

Nest.js 애플리케이션의 주 모듈인 AppModule을 정의하는 부분입니다. @Module() 데코레이터를 사용하여 정의되는데 Nest 애플리케이션의 구조를 정의하고 애플리케이션에서 사용되는 모든 모듈을 import하며, 애플리케이션의 루트 모듈로 사용됩니다.

 

Module 데코레이터는 Nest 모듈을 정의하는 데 사용되며, 여기에는 해당 모듈이 포함하는 컨트롤러와 프로바이더(서비스)를 지정합니다.

  • imports: [] - 현재 모듈에서 사용하는 외부 모듈을 import할 때 사용합니다.
    예를 들어, 다른 Nest 모듈이나 외부 라이브러리를 사용할 때 여기에 import 문을 추가해주는데 현재 예제에서는 외부 모듈을 사용하지 않기 때문에 빈 배열을 넣어줍니다.
  • controllers: [AppController]: 현재 모듈에서 사용하는 컨트롤러를 정의합니다. 현재 예제에서는 AppController만 사용하므로 AppController만 넣어줍니다.
  • providers: [AppService]: 현재 모듈에서 사용하는 프로바이더(서비스)를 정의합니다. 현재 예제에서는 AppService만 사용하므로 배열에 한 개의 요소만 있습니다. 프로바이더는 주로 비즈니스 로직을 수행하거나 데이터를 조작하는 데 사용됩니다.

 

app.controller.ts

import { Controller, Get } from '@nestjs/common';
import { AppService } from './app.service';

@Controller()
export class AppController {
  constructor(private readonly appService: AppService) {}

  @Get()
  getHello(): string {
    return this.appService.getHello();
  }
}

 

AppController는 HTTP요청(GET, POST, DELETE, 등) 처리하는 컨트롤러를 정의하는 부분입니다.

Nest에서 컨트롤러는 라우팅을 관리하고 클라이언트로부터의 요청을 처리하는데 여기서는 AppService를 통해 "Hello Bami!"를 반환하는 역할을 합니다.

 

app.service.ts

import { Injectable } from '@nestjs/common';

@Injectable()
export class AppService {
  getHello(): string {
    return 'Hello Bami!';
  }
}

 

AppService비즈니스 로직이나 데이터 조작을 수행하는 서비스를 정의하는 부분입니다. Nest에서 서비스는 주로 컨트롤러에서 사용되는데 여기에서는"Hello Bami!"를 반환하는 단순한 서비스형태로 보여주고 있습니다.

 

 

728x90
반응형