π 곡λΆνλ μ§μ§μνμΉ΄λ μ²μμ΄μ§?
[Nest JS λ‘ CRUD κ²μν λ§λ€κΈ°] (7) κ²μλ¬Ό μμ±μ μν DTO (Data Transfer Object) λ³Έλ¬Έ
π©π» λ°±μλ(Back-End)/Nest js
[Nest JS λ‘ CRUD κ²μν λ§λ€κΈ°] (7) κ²μλ¬Ό μμ±μ μν DTO (Data Transfer Object)
μ§μ§μνμΉ΄ 2023. 6. 1. 15:04728x90
λ°μν
<λ³Έ λΈλ‘κ·Έλ John Ahn μ μ νλΈλ₯Ό μ°Έκ³ ν΄μ 곡λΆνλ©° μμ±νμμ΅λλ€ :-)>
=> λ°λΌνλ©΄μ λ°°μ°λ NestJS
π§Έ DTO (Data Transfer Object) λ
: κ³μΈ΅κ³Ό λ°μ΄ν° κ΅νμ μν κ°μ²΄
: DB μμ λ°μ΄ν°λ₯Ό μ»μ΄ Service λ Controller λ±μΌλ‘ λ³΄λΌ λ μ¬μ©νλ κ°μ²΄
: DTO λ λ°μ΄ν°κ° λ€νΈμν¬λ₯Ό ν΅ν΄ μ μ‘λλ λ°©λ²μ μ μν¨
: Interface λ class λ₯Ό μ΄μ©νμ¬ μ μ λ¨
: λ°μ΄ν° μ ν¨μ±μ 체ν¬νλ λ° ν¨μ¨μ + λ μμ μ μΈ μ½λλ‘ λ§λ€μ΄μ€
: class λ λ°νμμμ μλνκΈ° λλ¬Έμ νμ΄ν κΈ°λ₯ μ΄μ© μ μ μ©ν¨
π src/boards/dto/create-board.dto.js
export class CreateBoardDto {
title: string;
description: string;
}
π src/boards/boards.service.ts
// λ€λ₯Έ μ»΄ν¬λνΈμμ μ΄ μλΉμ€λ₯Ό μ¬μ©ν μ μκ² λ§λ€μ΄μ€
// @Injectable λ°μ½λ μ΄ν°λ‘ κ°μΈμ Έμ λͺ¨λμ μ 곡
import { Injectable } from '@nestjs/common';
import { Board, BoardStatus } from './board.model';
import { CreateBoardDto } from "./dto/create-board.dto";
import { v1 as uuid } from "uuid";
@Injectable()
export class BoardsService {
// [] λ‘ νμ
μ§μ ν¨
private boards: Board[] = [];
// λͺ¨λ κ²μλ¬Ό μ‘°ννκΈ°
getAllBoards(): Board[] {
return this.boards;
}
// κ²μλ¬Ό μμ±νκΈ°
createBoard(createBoardDto: CreateBoardDto) {
const {title, description} = createBoardDto;
const board: Board = {
id: uuid(), // λ°μ΄ν°λ² μ΄μ€μμ μμμ ν΄μ£Όμ§λ§, μ¬κΈ°μλ uuid λͺ¨λλ‘ μμλ‘ λ£μ΄μ€
title,
description,
status: BoardStatus.PUBLIC
}
this.boards.push(board);
return board;
}
}
π src/boards/boards.controler.ts
// λ€μ΄μ€λ μμ²μ μ²λ¦¬νκ³ ν΄λΌμ΄μΈνΈμ μλ΅μ λ°νν¨
// @Controller λ°μ½λ μ΄ν°λ‘ ν΄λμ€λ₯Ό λ°μ½λ μ΄μ
νμ¬ μ μν¨
// Handler : @Get, @Post, @Delete λ±κ³Ό κ°μ λ°μ½λ μ΄ν°λ‘ μ₯μ λ 컨νΈλ‘€λ¬ ν΄λμ€ λ΄μ λ¨μν λ©μλ
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 boardsService : BoardsService) {}
@Get("/")
getAllBoard(): Board[] {
return this.boardsService.getAllBoards();
}
@Post()
createBoard(
@Body() createBoardDto: CreateBoardDto
): Board {
return this.boardsService.createBoard(createBoardDto)
}
}
728x90
λ°μν
'π©βπ» λ°±μλ(Back-End) > Nest js' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
Comments