2024. 7. 3. 22:41ใTIL
๐กDTO๋?
1. DTO (Data Transfer Object)
- DTO(Data Transfer Object)๋ DB์์ ๋ฐ์ดํฐ๋ฅผ ์ป์ด Service๋ Controller ๋ฑ์ผ๋ก ๋ณด๋ผ ๋ ์ฌ์ฉํ๋ ๊ณ์ธต๊ฐ ๋ฐ์ดํฐ ๊ตํ์ ์ํ ๊ฐ์ฒด๋ฅผ ์๋ฏธํ๋ค.
- DTO๋ ๋ฐ์ดํฐ์ ๊ตฌ์กฐ์ ๋ด์ฉ์ ์ ์ํ๋ ๊ฐ์ฒด๋ก, ์ด๋ฅผ ํตํด ๋ฐ์ดํฐ ์ ์ก ์ ๋ถํ์ํ ์ ๋ณด๊ฐ ํฌํจ๋์ง ์๋๋ก ํ๊ณ , ๋ฐ์ดํฐ ์ ํจ์ฑ์ ๊ฒ์ฆํ๊ณ , ๋ฐ์ดํฐ ์ ์ก์ ํจ์จ์ฑ์ ๋์ธ๋ค.
- interface๋ class๋ฅผ ์ด์ฉํด์ ์ ์ ๋ ์ ์๋ค.( Nest Js์์๋ ํด๋์ค๋ฅผ ์ด์ฉํ๋ ๊ฒ์ ์ถ์ฒ!)

2. DTO๋ฅผ ์ฌ์ฉํ๋ ์ด์
- DTO์ Entity๋ฅผ ๋ถ๋ฆฌ
- ๋ฐ์ดํฐ ์ ํจ์ฑ์ ์ฒดํฌํ๋๋ฐ ํจ์จ์ ์ด๋ค.
- ๋ ์์ ์ ์ธ ์ฝ๋๋ก ๋ง๋ค์ด ์ค๋ค. ํ์
์คํฌ๋ฆฝํธ์ ํ์
์ผ๋ก๋ ์ฌ์ฉ์ด ๋๋ค.
3. ์์
1) DTO ํด๋์ค ์ ์
import { IsString, IsInt, IsNotEmpty } from 'class-validator';
export class CreateBoardDto {
@IsString()
@IsNotEmpty()
title: string;
@IsString()
@IsNotEmpty()
description: string;
}
- CreateBoardDto๋ ๊ฒ์ํ ํญ๋ชฉ์ ์์ฑํ ๋ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์ ์ํ๋ค.
2) ์ปจํธ๋กค๋ฌ์์ DTO ์ฌ์ฉ
import { Controller, Post, Body } from '@nestjs/common';
import { BoardsService } from './boards.service';
import { CreateBoardDto } from './dto/create-board.dto';
@Controller('boards')
export class BoardsController {
constructor(private readonly boardsService: BoardsService) {}
@Post()
createBoard(@Body() createBoardDto: CreateBoardDto) {
return this.boardsService.createBoard(createBoardDto);
}
}
- @Body() ๋ฐ์ฝ๋ ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ ์์ฒญ ๋ณธ๋ฌธ์ CreateBoardDto ๊ฐ์ฒด๋ก ๋ณํํ๋ค.
3) ์๋น์ค์์ DTO ์ฌ์ฉ
import { Injectable } from '@nestjs/common';
import { CreateBoardDto } from './dto/create-board.dto';
import { Board } from './board.entity';
@Injectable()
export class BoardsService {
private boards: Board[] = [];
createBoard(createBoardDto: CreateBoardDto): Board {
const { title, description } = createBoardDto;
const board: Board = {
id: this.boards.length + 1,
title,
description,
};
this.boards.push(board);
return board;
}
}
- ์๋น์ค ๊ณ์ธต์์๋ DTO๋ฅผ ์ฌ์ฉํ์ฌ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌ๋ฐ๊ณ , ํ์ํ ๋ก์ง์ ์ํํ๋ค.
'TIL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
TIL( NestJS - Passport ) (0) | 2024.07.05 |
---|---|
TIL( Nest.js - IoC, DI ) (0) | 2024.07.04 |
TIL( TypeScript - Utility type ) (0) | 2024.07.02 |
TIL ( ๋ฐ์ฝ๋ ์ดํฐ - ts ) (0) | 2024.07.01 |
TIL ( prisma ์์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค(MySQL) ์ฐ๊ฒฐํ๊ธฐ ) (0) | 2024.06.28 |