๋ชฉ๋ก์ „์ฒด ๊ธ€ (1005)

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

[Nest JS ๋กœ CRUD ๊ฒŒ์‹œํŒ ๋งŒ๋“ค๊ธฐ] (10) NestJS PIPE & ๊ฒŒ์‹œ๋ฌผ ์ƒ์„ฑ ์‹œ ์œ ํšจ์„ฑ ์ฒดํฌํ•˜๊ธฐ

=> ๋”ฐ๋ผํ•˜๋ฉด์„œ ๋ฐฐ์šฐ๋Š” NestJS ๐Ÿงธ NestJS PIPE : ํŒŒ์ดํ”„๋Š” @Injectable () ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ๋กœ ์ฃผ์„์ด ๋‹ฌ๋ฆฐ ํด๋ž˜์Šค : data transformation ๊ณผ data validation ์„ ์œ„ํ•ด์„œ ์‚ฌ์šฉ๋จ : ์ปจํŠธ๋กค๋Ÿฌ ๊ฒฝ๋กœ ์ฒ˜๋ฆฌ๊ธฐ์— ์˜ํ•ด ์ฒ˜๋ฆฌ๋˜๋Š” ์ธ์ˆ˜์— ๋Œ€ํ•ด ์ž‘๋™ํ•จ : Nest ๋Š” ๋ฉ”์†Œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋˜๊ธฐ ์ง์ „์— ํŒŒ์ดํ”„๋ฅผ ์‚ฝ์ž…ํ•˜๊ณ  ํŒŒ์ดํ”„๋Š” ๋ฉ”์†Œ๋“œ๋กœ ํ–ฅํ•˜๋Š” ์ธ์ˆ˜๋ฅผ ์ˆ˜์‹ ํ•˜๊ณ  ์ด์— ๋Œ€ํ•ด ์ž‘๋™ํ•จ ๐ŸŽ€ data transformation : ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋ฅผ ์›ํ•˜๋Š” ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ ๐ŸŽ€ data validation : ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋ฅผ ํ‰๊ฐ€ํ•˜๊ณ  ์œ ์š”ํ•œ ๊ฒฝ์šฐ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์€ ์ƒํƒœ๋กœ ์ „๋‹ฌ (๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์—๋Ÿฌ ์ฒ˜๋ฆฌ) ๋ผ์šฐํ„ฐ ํ•ธ๋“ค๋Ÿฌ (Router Handler) ๊ฐ€ ์ฒ˜๋ฆฌํ•˜๋Š” ์ธ์ˆ˜์— ๋Œ€ํ•ด ์ž‘๋™ํ•จ ํŒŒ์ดํ”„๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ๋ฐ”๋กœ ์ง์ „์—..

[Nest JS ๋กœ CRUD ๊ฒŒ์‹œํŒ ๋งŒ๋“ค๊ธฐ] (7) ๊ฒŒ์‹œ๋ฌผ ์ƒ์„ฑ์„ ์œ„ํ•œ DTO (Data Transfer Object)

=> ๋”ฐ๋ผํ•˜๋ฉด์„œ ๋ฐฐ์šฐ๋Š” 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...

[Nest JS ๋กœ CRUD ๊ฒŒ์‹œํŒ ๋งŒ๋“ค๊ธฐ] (6) ๊ฒŒ์‹œ๋ฌผ ์ƒ์„ฑํ•˜๊ธฐ (CRUD ์˜ C) : Controller

=> ๋”ฐ๋ผํ•˜๋ฉด์„œ ๋ฐฐ์šฐ๋Š” NestJS ๐Ÿงธ ๊ฒŒ์‹œ๋ฌผ ์ƒ์„ฑํ•˜๊ธฐ (CRUD ์˜ C) : Controller : request, response ๋Š” Controller ์—์„œ ์ฒ˜๋ฆฌํ•จ : Express ์—์„œ๋Š” bodyParser ๋ชจ๋“ˆ์„ ์ด์šฉํ•ด์„œ req.body ์‹์œผ๋กœ ํด๋ผ์ด์–ธํŠธ์—์„œ ๋ณด๋‚ด์˜จ ๊ฐ’์„ ๋ฐ›์•„์˜ด : @Body body๋ฅผ ์ด์šฉํ•˜์—ฌ request ์—์„œ ๋ณด๋‚ด์˜จ ๊ฐ’์„ ๊ฐ€์ ธ์˜ด ๐ŸŽ€ src/boards/boards.controller.ts // ๋“ค์–ด์˜ค๋Š” ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ํด๋ผ์ด์–ธํŠธ์— ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•จ // @Controller ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ๋กœ ํด๋ž˜์Šค๋ฅผ ๋ฐ์ฝ”๋ ˆ์ด์…˜ํ•˜์—ฌ ์ •์˜ํ•จ // Handler : @Get, @Post, @Delete ๋“ฑ๊ณผ ๊ฐ™์€ ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ๋กœ ์žฅ์‹ ๋œ ์ปจํŠธ๋กค๋Ÿฌ ํด๋ž˜์Šค ๋‚ด์˜ ๋‹จ์ˆœํ•œ ๋ฉ”์„œ๋“œ import { Body, Cont..