DevBoi

[NestJS] DTO 사용 본문

Develop/[NestJs]

[NestJS] DTO 사용

HiSmith 2023. 5. 27. 14:32
반응형

DTO는 뭐 알다싶이 데이터 전송객체이다.

클라이언트로의 값을 받거나, DB로 전달할때 주로 사용하는 객체이다.

 

DTO - 데이터 유효성을 검증하는 데 효율적이고, 코드를 안정적으로 만들어주는 역할을 한다 (몰랐던 사람은 참고 ㅎ)

 

* DTO를 만들어보자

이전 프로젝트를 보면, 파라미터로 해당 값들을 따로따로 한개씩 받는다.

말도안되는 짓이기 떄문에, DTO를 만들어서 DTO채로 받아보자

 

export class createBoardDto{
    title: string;
    description: string;
}

 

 

변경된 controller와 Service를 보자

import { Injectable } from '@nestjs/common';
import { Board, BoardStatus } from './board.model';
import {v1 as uuid} from 'uuid'
import { createBoardDto } from './dto/create-board.dto';

@Injectable()
export class BoardsService {
    private boards: Board[] = [];
    
    getAllBoards() : Board[]{
        return this.boards;
    }
    createBoard(createBoardDto: createBoardDto){
        const title = createBoardDto.title;
        const description = createBoardDto.description;
        const board: Board = {
            id: uuid(),
            title,
            description,
            status: BoardStatus.PUBLIC
        }
        this.boards.push(board);
        return board;
    }
}

 

 

import { Body, Controller, Get, Post } from '@nestjs/common';
import { BoardsService } from './boards.service';
import {Board} from './board.model'
import { createBoardDto } from './dto/create-board.dto';

@Controller('boards')
export class BoardsController {
   constructor(private boardService: BoardsService){}
   
   @Get('/')
   getAllBoard(): Board[]{
      return this.boardService.getAllBoards();
   }

   @Post('/create')
   createBoard(@Body() createBoardDto :createBoardDto){
         this.boardService.createBoard(createBoardDto);
   }
   
}

 

DTO를 사용해서 받고, 이를 사용해서 넣어주는 소스로 변경했다.

 

반응형