Joon's Space
[NestJS] NestJS API 만들기(controller, service) 본문
NestJs 의 구조
기본적으로 프로젝트파일들을 생성했을 때, 가장 중요한 폴더 src를 살펴보면 controller, module, service, main 파일이 있다.
nestjs 에서는 controller, service 의 파일코드들을 module 에서 관리하고, 이러한 모듈들을 main 파일에서 실행시키는 구조이다.
<app.controller.ts>
import { Controller, Get, Post } from '@nestjs/common';
import { AppService } from './app.service';
@Controller()
export class AppController {
constructor(private readonly appService: AppService) {}
@Get()
getHello(): string {
return this.appService.getHello();
}
@Get('/hello')
sayHello(): string {
return this.appService.getHi();
}
}
<app.service.ts>
import { Injectable } from '@nestjs/common';
@Injectable()
export class AppService {
getHello(): string {
return 'Hello Nest!';
}
getHi(): string {
return 'Hi 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 {}
<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();
controller : url 가져오고, 함수를 실행하는 역할 (router 같은 존재)
컨트롤러의 데코레이터(@Get, @Post, etc 같은것)는 꾸며주는 함수나 클래스랑 붙어서 작성해야함
express.js 의 controller/router 같은것 (express.js 에서는 라우터에서 app.get 으로 쓰고 함수를 사용)
그치만 여기서 왜 컨트룰러에서 원하는 값을 return 하면 되는데, service를 사용하는 이유는 무엇일까?
service 에서는 비즈니스 로직을 작성하기 때문에, 실제로 function을 가지는 부분을 여기서 작성한다. (ex. 위 AppService class 안의 getHello함수)
반응형
'Web > NestJS' 카테고리의 다른 글
[NestJS] NestJS API 만들기(movies controller, router, service, DTO) (2) (0) | 2021.07.08 |
---|