๐Ÿ˜Ž ๊ณต๋ถ€ํ•˜๋Š” ์ง•์ง•์•ŒํŒŒ์นด๋Š” ์ฒ˜์Œ์ด์ง€?

[Nest JS ๋กœ CRUD ๊ฒŒ์‹œํŒ ๋งŒ๋“ค๊ธฐ] (30) ์ธ์ฆ๋œ ์œ ์ €๋งŒ ๊ฒŒ์‹œ๋ฌผ ๋ณด๊ณ  ์“ธ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๊ธฐ ๋ณธ๋ฌธ

๐Ÿ‘ฉ‍๐Ÿ’ป ๋ฐฑ์—”๋“œ(Back-End)/Nest js

[Nest JS ๋กœ CRUD ๊ฒŒ์‹œํŒ ๋งŒ๋“ค๊ธฐ] (30) ์ธ์ฆ๋œ ์œ ์ €๋งŒ ๊ฒŒ์‹œ๋ฌผ ๋ณด๊ณ  ์“ธ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๊ธฐ

์ง•์ง•์•ŒํŒŒ์นด 2023. 6. 10. 22:08
728x90
๋ฐ˜์‘ํ˜•

<๋ณธ ๋ธ”๋กœ๊ทธ๋Š” John Ahn ์˜ ์œ ํŠœ๋ธŒ๋ฅผ ์ฐธ๊ณ ํ•ด์„œ ๊ณต๋ถ€ํ•˜๋ฉฐ ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค :-)>

=> ๋”ฐ๋ผํ•˜๋ฉด์„œ ๋ฐฐ์šฐ๋Š” NestJS

 

๐Ÿงธ ์ธ์ฆ๋œ ์œ ์ €๋งŒ ๊ฒŒ์‹œ๋ฌผ ๋ณด๊ณ  ์“ธ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๊ธฐ 

๐ŸŽ€ ์œ ์ €์—๊ฒŒ ๊ฒŒ์‹œ๋ฌผ ์ ‘๊ทผ ๊ถŒํ•œ ์ฃผ๊ธฐ

์ธ์ฆ์— ๊ด€ํ•œ ๋ชจ๋“ˆ์„ board ๋ชจ๋“ˆ์— ์“ธ ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜๋ฏ€๋กœ, board module ์—์„œ ์ธ์ฆ ๋ชจ๋“ˆ imports ํ•˜

 

๐ŸŽ€ UseGuards (AuthGuard())

์‚ฌ๋žŒ์ด ์š”์ฒญ์„ ์ค„ ๋•Œ ์˜ฌ๋ฐ”๋ฅธ ํ† ํฐ์„ ๊ฐ€์ง€๊ณ  ์š”์ฒญ์„ ์ฃผ๋Š”์ง€ ๋ณธ ํ›„์— ๊ฒŒ์‹œ๋ฌผ์— ์ ‘๊ทผ ํ•  ๊ถŒํ•œ ์คŒ

AuthGuard (์ธ์ฆ ๋ฏธ๋“ค์›จ์–ด) ๋Š” ๊ฐ๊ฐ์˜ ๋ผ์šฐํŠธ ๋ณ„๋กœ ์ค„ ์ˆ˜ ์žˆ๊ณ , ํ•œ๋ฒˆ์— ํ•˜๋‚˜์˜ ์ปจํŠธ๋กค๋Ÿฌ ์•ˆ์— ๋“ค์–ด์žˆ๋Š” ๋ชจ๋“  ๋ผ์šฐํ„ฐ ์ค„ ์ˆ˜ ์žˆ์Œ

 

๐ŸŽ€ boards.controller.ts

// ๋“ค์–ด์˜ค๋Š” ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ํด๋ผ์ด์–ธํŠธ์— ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•จ
// @Controller ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ๋กœ ํด๋ž˜์Šค๋ฅผ ๋ฐ์ฝ”๋ ˆ์ด์…˜ํ•˜์—ฌ ์ •์˜ํ•จ
// Handler : @Get, @Post, @Delete ๋“ฑ๊ณผ ๊ฐ™์€ ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ๋กœ ์žฅ์‹ ๋œ ์ปจํŠธ๋กค๋Ÿฌ ํด๋ž˜์Šค ๋‚ด์˜ ๋‹จ์ˆœํ•œ ๋ฉ”์„œ๋“œ
import { Body, Controller, Delete, Get, Param, ParseIntPipe, Patch, Post, UseGuards, UsePipes, ValidationPipe } from '@nestjs/common';
import { BoardsService } from './boards.service';
import { BoardStatus } from './board-status.enum';
import { CreateBoardDto } from './dto/create-board.dto';
import { BoardStatusValidationPipe } from './pipes/board-status-validation.pipe';
import { Board } from './board.entity';
import { AuthGuard } from '@nestjs/passport';

@Controller('boards')
// ์ธ์ฆ๋œ ์œ ์ €๋งŒ ๊ฒŒ์‹œ๋ฌผ ๋ณด๊ณ  ์“ธ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๊ธฐ 
@UseGuards(AuthGuard())
export class BoardsController {
    constructor(private boardsService : BoardsService) {}
    
    // ๋ชจ๋“  ๊ฒŒ์‹œ๋ฌผ ์กฐํšŒํ•˜๊ธฐ
    @Get("/")
    getAllBoard(): Promise<Board[]> {
        return this.boardsService.getAllBoards();
    }

    // ๊ฒŒ์‹œ๋ฌผ ์ƒ์„ฑํ•˜๊ธฐ + ์œ ํšจ์„ฑ ์ฒดํฌํ•˜๊ธฐ 
    @Post()
    @UsePipes(ValidationPipe)
    createBoard(@Body() createBoardDto: CreateBoardDto): Promise<Board> {
        return this.boardsService.createBoard(createBoardDto)
    }
    // @Post()
    // @UsePipes(ValidationPipe)
    // createBoard(
    //     @Body() createBoardDto: CreateBoardDto
    // ): Board {
    //     return this.boardsService.createBoard(createBoardDto)
    // }
    
    // ID๋กœ ํŠน์ • ๊ฒŒ์‹œ๋ฌผ ๊ฐ€์ ธ์˜ค๊ธฐ
    @Get("/:id")
    getBoardByID(@Param("id") id:number) : Promise<Board> {
        return this.boardsService.getBoardById(id);
    }
    // @Get("/:id")
    // getBoardByID(@Param("id") id: string): Board {
    //     return this.boardsService.getBoardById(id)
    // }

    // ID ๋กœ ํŠน์ • ๊ฒŒ์‹œ๋ฌผ ์‚ญ์ œํ•˜๊ธฐ
    @Delete("/:id")
    deleteBoard(@Param("id",ParseIntPipe) id): Promise<void> {
        return this.boardsService.deleteBoard(id);
    }
    // @Delete("/:id")
    // deleteBoard(@Param("id") id: string): void {
    //     this.boardsService.deleteBoard(id);
    // }

    // ํŠน์ • ๊ฒŒ์‹œ๋ฌผ์˜ ์ƒํƒœ ์—…๋ฐ์ดํŠธ 
    @Patch("/:id/status")
    updateBoardStatus(
        @Param("id", ParseIntPipe) id: number,
        @Body('status', BoardStatusValidationPipe) status: BoardStatus
    ) {
        return this.boardsService.updateBoardStatus(id, status);
    }
}
728x90
๋ฐ˜์‘ํ˜•
Comments