컨트롤러에서 봤듯이, get 데코레이터만 만들어도 가능했는데 서비스는 뭘까?
이걸 이해하려면 아키텍처에 대해서 얘기해야 함
NestJS
에서는 Controller에서 비지니스 로직을 분리하고 싶어함.Controller
: 단순히 라우팅만 해주는 녀석
Service
: 비지니스 로직 처리
컨트롤러에서의 이름과, 서비스에서의 이름은 맞추면 좋긴한데, 필수는 아님
예시
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(); } // 👎 아래와 같이 직접적으로 비지니스 로직을 컨트롤러에 명시하는 것은 지양해야함. @Get('/hello') sayHello(): string { return 'hello'; } }
import { Injectable } from '@nestjs/common'; @Injectable() export class AppService { getHello(): string { return 'Hello Fucking World!'; } }