Nest.js Pattern

영슈·2023년 4월 15일
0

Nest

목록 보기
1/6
post-thumbnail

출처 링크

https://medium.com/geekculture/nest-js-architectural-pattern-controllers-providers-and-modules-406d9b192a3a

Nest의 역사

  • 2017년 개발
  • Kamil Myśliwiec 에 의해 창조 (
  • Angular Architecture 의 스타일 과 구조를 참조
  • MVC Design Pattern 을 기본 Pattern 으로 함

Nest의 특징

  • Typescript 지원
  • Node 위에 구현된 Layer
  • Server Side Application
  • Module 단위로 묶어서 관리

Nest Controller

  • Application 에서 요청을 받고 Routing 처리하는 부분
import { Controller, Get } from '@nestjs/common';
import { CatsService } from '../services/cats.service';

@Controller('cats')
export class CatsController {
  constructor(private readonly catsService: CatsService) {}

  @Get('allcats')
  getCats(): string {
    return this.catsService.getAllCats();
  }

  @Get('onecat')
  getOneCat(): string {
    return this.catsService.getOneCat();
  }
}
  • Controller Decorator 로 해당 class 가 Controller임을 선언
  • Get Decorator 로 해당 경로에 들어오면 해당 Function이 처리함을 선언
  • D.I 를 통해 catsService 를 Instance 할당 하지 않아도 자동으로 주입된 Instance 참조

Nest Service

  • Business Logic 을 처리하는 부분
import { Injectable } from '@nestjs/common';

@Injectable()
export class CatsService {
  getAllCats(): string {
    return 'Get all cats!';
  }

  getOneCat(): string {
    return 'Get one cat!';
  }
}
  • Injectable Decorator 로 해당 Class 가 주입 가능한 Provider 임을 선언

Nest Module

  • Controller 와 Provider 를 결합하여 Application을 Instance 가능하게 하는 부분
  • Module 을 통해 Application Graphe 를 만들어감.
import { Module } from '@nestjs/common';
import { CatsController } from './controllers/cats.controller';
import { CatsService } from './services/cats.service';

@Module({
  controllers: [CatsController],
  providers: [CatsService],
})
export class CatsModule {}
  • Moudle Decorator를 통해 해당 Class 가 Module 임을 선언
  • controllers 해당 Module에 포함할 Controller 를 선언
  • providers : 해당 Module에 포함할 Provider(service,Factory,Value등) 를 선언

0개의 댓글