
새롭게 시작하기 위해 기본으로 제공된 코드 중 app.module.ts와 main.ts를 제외하고 다른 파일들을 지워준다. app.module.ts 파일도 아래와 같이 기본 형태만 남겨둔다.
import { Module } from '@nestjs/common';
@Module({
imports: [],
})
export class AppModule {}
이제 원하는 모듈을 생성하기 위해 아래와 같은 명령어를 터미널 창에 입력해주면 된다. 필자는 간단한 게시판을 만들어보기 위해 모듈의 이름을 board로 해서 진행했다.
nest g module board
이렇게 하면 board 폴더가 생기면서 내무에 board.module.ts 파일이 생성되고 app.module.ts에는 자동으로 새로 만든 모듈이 import 된다. 개발자가 해야 하는 과정이 너무나도 자연스럽게 자동으로 진행되었다...!!
다음으로 해당 모듈에 대한 controller를 생성하기 위해서는 터미널 창에 아래와 같은 명령어를 적어주면 된다.
nest g controller board --no-spec
그러면 또 자동으로 board.controller.ts 파일이 만들어지고 내부에 컨트롤러가 작성되며, 이번엔 board.module.ts에 controller가 자동으로 입력된다.
이렇게 생성된 controller 내부에 @Get(), @Post()와 같은 데코레이터를 통해 http 메서드를 설정하고 그에 따른 핸들러 함수들을 정의하면 된다. 이때 데코레이터에 경로 문자열을 추가하여 특정 경로에 대한 핸들러를 설정할 수 있다.
import { Controller, Post, Body, UsePipes } from '@nestjs/common';
import { CustomPipe } from './custom.pipe';
import { CreateBoardDto } from './dto/create-board.dto';
@Controller('board')
export class ItemsController {
@Post('/:id/comment')
@UsePipes(new CustomPipe())
create(@Body() createBoardDto: CreateBoardDto) {
// 핸들러 로직
}
}