728x90
반응형
소개에서 다루었던 파일들을 다시 한번 보자.
main.ts
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
await app.listen(3000);
}
bootstrap();
이곳에서 async await로 Appmodule을 앱으로 만들어 포트를 할당해준다.
app.modules.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 {}
이곳에서 AppController와 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();
}
}
이곳에서 AppService 파일을 import 하고 Controller를 만들어준다.
app.service.ts
import { Injectable } from '@nestjs/common';
@Injectable()
export class AppService {
getHello(): string {
return 'Hello World!';
}
}
마지막으로 Service에선 Controller에서 return할 때 쓰인 getHello()함수를 명시하여 선언해준다.
이 때 Controller에서 바로 return 'Hello World'를 쓸 수도 있는데 왜 굳이 Service를 만들어주어야 하는지 의문점이 들 수 있다. 구조와 아키텍처에 관한 설명이 필요하다.
Controller는 그저 Url을 가져오는 역할이며, Service는 비즈니스 로직을 만드는 역할을 수행한다.
즉, Controller는 Url에 따른 함수를 가져오게 하고, Service가 그 함수가 되는 것이다.
Url에 따라 분명 똑같은 비즈니스 로직이 실행되어야 할 때가 있다. 그럴 땐 Service에서 지정한 함수를 Controller에서 재사용이 가능하며, 유지 및 보수를 할 때 해당 로직에 문제가 생길 경우 수정 또한 쉽게 할 수 있다.
728x90
반응형
'Back-End > Nest.js' 카테고리의 다른 글
Nest.js | REST API | Movies Controller (0) | 2021.09.24 |
---|---|
Nest.js | 개요 | Modules (0) | 2021.09.24 |
Nest.js | 개요 | Controller(2) (0) | 2021.09.24 |
Nest.js | 개요 | Controllers(1) (0) | 2021.09.24 |
Nest.js | 개요 | 첫 번째 단계 (0) | 2021.09.24 |