๐ ๊ณต๋ถํ๋ ์ง์ง์ํ์นด๋ ์ฒ์์ด์ง?
[Nest JS ๋ก CRUD ๊ฒ์ํ ๋ง๋ค๊ธฐ] (30) ์ธ์ฆ๋ ์ ์ ๋ง ๊ฒ์๋ฌผ ๋ณด๊ณ ์ธ ์ ์๊ฒ ํ๊ธฐ ๋ณธ๋ฌธ
๐ฉ๐ป ๋ฐฑ์๋(Back-End)/Nest js
[Nest JS ๋ก CRUD ๊ฒ์ํ ๋ง๋ค๊ธฐ] (30) ์ธ์ฆ๋ ์ ์ ๋ง ๊ฒ์๋ฌผ ๋ณด๊ณ ์ธ ์ ์๊ฒ ํ๊ธฐ
์ง์ง์ํ์นด 2023. 6. 10. 22:08728x90
๋ฐ์ํ
<๋ณธ ๋ธ๋ก๊ทธ๋ 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
๋ฐ์ํ
'๐ฉโ๐ป ๋ฐฑ์๋(Back-End) > Nest js' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Comments