카테고리 없음

Nest.js 모듈 생성하기 (Controller, Service)

DevilFront 2022. 12. 21. 12:15
반응형

 게시판을 만들기 위해 먼저 게시글 Board 모듈을 생성해보겠다. 

 

nest cli 를 이용해서 생성해줄 수 있다. 

 

// nest g module 모듈명
nest g module boards

 

 

 

자동으로 폴더 및 파일 생성을 해주고 루트 모듈에도 임포트 된 것을 확인 할 수 있다. 

 

모듈 안에 들어갈 controller, service, entity 등을 추가해주면 되겠다. 지금은 하나하나 추가해주고 있지만 나중에 한번에 모듈파일부터 관련된 파일들도 한번에 생성하는 명령어도 알아보겠다. 

 

Controller 파일을 추가해주기 전에 Controller 가 하는 역할을 알아보면 들어오는 요청을 처리하고 클라이언트에 그 응답을 반환하는 역할을 한다. 

 

Controller 안에 Handler가 존재하는데 핸들러는 @Get, @Post, @Delete 등과 같은 데코레이터로 장식 된 메서드다.

 

Controller를 생성해주려면

 

nest g controller boards --no-spec

// --no-spec 테스트를 위한 코드 생성 x
// board.controller.ts 파일 생성 및 board.module.ts에 자동 임포트

import { Module } from '@nestjs/common';
import { BoardsController } from './boards.controller';

@Module({
  controllers: [BoardsController],
})
export class BoardsModule {}

 

Service 파일을 만들어보자

 

Service 안에선 주로 데이터베이스 관련된 로직을 처리한다. 주로 데이터의 유효성 체크도 하고 컨트롤러에서 A 요청이 들어오고 그 응답값을 Service 파일은 A 요청 관련 값을 뽑아오는 로직을 돌고 리턴해주고 컨트롤러는 리턴된 그 값을 다시 클라이언트로 보내주는 흐름이다. 

 

Service도 마찬가지로

nest g service boards --no-spec

 

만들어진 Service 파일에는 @Injectable 데코레이터가 달려 있는데 다른 컴포넌트에서도 이 서비스를 사용 할 수 있게 만들어주는 역할이다. 

 

그럼 Board Service를 Board Controller에서 이용 할 수 있게 해주려면

 

import { Controller } from '@nestjs/common';
import { BoardsService } from './boards.service';

@Controller('boards')
export class BoardsController {
  constructor(private boardService:BoardsService) {}
}

// 생성자 이용, Typescript 이용 private 사용

 

 

반응형