앞서 소개글에도 설명했듯이 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!"를 반환하는 단순한 서비스형태로 보여주고 있습니다.
'프로그래밍(Basic) > NestJS' 카테고리의 다른 글
[바미] NestJS - 데코레이터(Custom decorators) (0) | 2024.03.02 |
---|---|
[바미] NestJS를 사용하여 REST API 구현하기 (0) | 2024.03.01 |
[바미] Nest 소개 (0) | 2024.02.26 |
Nest - EntityMetadataNotFoundError (0) | 2024.01.12 |
Nest - Swagger에서 변수 optional하게 처리해야 할 때 (0) | 2024.01.03 |