์ค์๊ฐ ๊ธฐ๋ฅ (์ฑํ
, ์๋ฆผ, ์ผ์ ๋ฐ์ดํฐ, ๋์๋ณด๋ ์
๋ฐ์ดํธ ๋ฑ)์ ๊ตฌํํ๋ ค๋ฉด ์น์์ผ (WebSocket) ๊ธฐ์ ์ด ํ์ํ๋ค.NestJS๋ ์ด๋ฅผ ๊ฐ๋จํ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก Gateway(๊ฒ์ดํธ์จ์ด)๋ผ๋ ๊ตฌ์กฐ๋ฅผ ์ ๊ณตํ๋ค. ๐ก WebSocketWebSocket์ ๋ธ๋ผ์ฐ์ ์ ์๋ฒ๊ฐ ์ง์์ ์ผ๋ก ์ฐ๊ฒฐ๋์ด ์๋ก ์์ ๋กญ๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๋ ์๋ฐฉํฅ ํต์ ๊ธฐ์ ์ด๋ค. ๊ธฐ์กด HTTP API ์์ฒญ-์๋ต ๊ตฌ์กฐ๊ฐ ์๋๋ผ ์ฐ๊ฒฐ์ด ์ ์ง๋ ์ํ์์ ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์๊ฒ ์ฆ์ Push๋ฅผ ๋ณด๋ผ ์ ์๋ค. ๐งฑ GatewayWebSocket ์๋ฒ๋ฅผ ๊ด๋ฆฌํ๋ NestJS์ Controller ๊ฐ์ ์ญํ ์ ํ๋ค.NestJS๋ ์น์์ผ์ ํธํ๊ฒ ์ฌ์ฉํ๋๋ก Gateway๋ผ๋ ์ถ์ํ ๋ ์ด์ด๋ฅผ ์ ๊ณตํ๋ค. โ
ํด๋ผ์ด์ธํธ์ ์ฐ๊ฒฐ/ํด์ ๊ฐ์งโ
ํด..
Framework/Nest.js
NestJS์์ ๊ฐ๋จํ API๋ฅผ ์์ฑํด๋ณด์.์ ์ผ ๋ง์ด ์ฌ์ฉํ๋ ToDo ๊ธฐ๋ฅ์ API๋ฅผ ์์ฑํด๋ณด์. ๐ TODO๐น๏ธ*.controller.tsAPI์ ์ง์
์ .์ฆ, ์์ฒญ์ ๋ฐ๋ ๊ณณ์ ์ ์ํ๋ค. โ
URL ๋ผ์ฐํ
์ ์ (@Get(), @Post ๋ฑ)โ
์์ฒญ Parameter, Body ๋ฐ๋๋ค.โ
๋น์ฆ๋์ค ๋ก์ง์ ์์ฑํ์ง ์๋๋ค.โ
๋๋ถ๋ถ service์ ์ผ์ "์์" "/todos" ๊ฒฝ๋ก๋ก ์์ฒญ์ ๋ณด๋์ ๋ CRUD๋ฅผ ์์ฑ.import { Controller, Get, Post, Body, Param, Patch, Delete } from '@nestjs/common';import { TodosService } from './todos.service';@Controller('todos')export cl..
๐ @๋ฐ์ฝ๋ ์ดํฐ๋?NestJS์์ ๋ฐ์ฝ๋ ์ดํฐ๋ ํด๋์ค, ๋ฉ์๋, ํ๋กํผํฐ, ํ๋ผ๋ฏธํฐ์ ์ถ๊ฐ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ๋ถ์ฌํ๊ฑฐ๋ ๋์์ ๋ฐ๊พธ๋ ์ญํ ์ ํ๋ค.TypeScript์ ๋ฐ์ฝ๋ ์ดํฐ ๋ฌธ๋ฒ์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ฉฐ, NestJS์ ํต์ฌ ์ฒ ํ์ธ ๋ฉํํ๋ก๊ทธ๋๋ฐ + ์์กด์ฑ ์ฃผ์
(DI)์ ๊ฐ๋ฅํ๊ฒ ํด์ฃผ๋ ํต์ฌ ์์์ด๋ค. ์ฝ๊ฒ ๋งํด,"Nest๊ฐ ์ด ์ฝ๋๊ฐ ์ด๋ค ์ญํ ์ ํ๋์ง ์ดํดํ๋๋ก ์๋ ค์ฃผ๋ ํ๊ทธ" ๐ค ์ ๋ฐ์ฝ๋ ์ดํฐ๊ฐ ํ์ํ๋ฐ?NestJS๋ Angular ์ํฅ์ ํฌ๊ฒ ๋ฐ์ ๋ฐ์ฝ๋ ์ดํฐ ๊ธฐ๋ฐ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋ค.Nest๋ ๋ฐ์ฝ๋ ์ดํฐ๋ฅผ ํตํด ํด๋์ค๋ฅผ ์ค์บ(scanning)ํ๊ณ ์ญํ ์ ํ์
ํด ๋ธ๋ถ IoC/DI ์ปจํ
์ด๋์ ๋ฑ๋กํ๋ค. ์ฆ, ๋ฐ์ฝ๋ ์ดํฐ๊ฐ ์์ด์ผ Nest๋ ๋ค์ ๋ด์ฉ๋ค์ ์ดํดํ ์ ์๋ค.โ
์ด๋ค ํด๋์ค๊ฐ ์ปจํธ๋กค๋ฌ์ธ์งโ
์ด๋ค ํด๋..
โฌ๏ธ ํ๋ก์ ํธ ์์ฑNestJS ๊ณต์ ํํ์ด์ง์ ๋ฅผ ์ฐธ๊ณ ํ์ฌ NestJS๋ฅผ ์คํํด๋ณด์.npm i -g @nestjs/clinest new โ๏ธ ๊ตฌ์กฐ๊ทธ๋ผ ๋ด ํ๋ก์ ํธ ํด๋ ํ์์ ์๋ ์ฌ์ง๊ณผ ๊ฐ์ ๊ตฌ์กฐ๊ฐ ์์ฑ๋๋ค.์ด์ ๊ฐ ํ์ผ์ ์ญํ ์ ์์๋ณด์. ๊ณต์ ํํ์ด์ง์์๋ ๋ค์๊ณผ ๊ฐ์ด ์ค๋ช
ํ๊ณ ์๋ค.FileDescriptionapp.controller.ts๊ธฐ๋ณธ ์ปจํธ๋กค๋ฌNestJS ์ดํ๋ฆฌ์ผ์ด์
์์ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ์๋ํฌ์ธํธ(๋ผ์ฐํธ)๋ฅผ ๋ด๋นํ๋ ์ปจํธ๋กค๋ฌ์ด๋ค.์ด ํ์ผ์๋ ๋ณดํต GET/ ๊ฐ์ ๊ฐ๋จํ ๊ฒฝ๋ก๋ฅผ ํ๋ ์ ์ํ๋ค.ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ฐ๊ณ ์๋ต์ ๋๋ ค์ฃผ๋ ๊ณ์ธตapp.controller.spec.ts์ปจํธ๋กค๋ฌ ๋จ์ ํ
์คํธapp.controller.ts์ ๊ธฐ๋ฅ์ด ์ ์์ ์ผ๋ก ๋์ํ๋์ง๋ฅผ ํ
์คํธํ๋ ๋จ์ ํ
์คํธ ํ์ผNes..
ํ์ฌ์์ ์ค์๊ฐ ๋ค์ค ํธ์ง (Figma, Notion์์ ์ ๊ฐ์ ๋ฉํฐ ํธ์ง) ๊ธฐ๋ฅ์ ์ง์ํ๊ธฐ ์ํ์ฌ ์๋ฒ ๊ณต๋ถ๋ฅผ ์์ํด์ผํ๋ค. ๊ณต๋ถ๋ฅผ ํ๋ฉด์ ์ ๋ฆฌํด๋ณด๊ณ ์ ์์ฑํ๋ค. ๐บ NestJS๋Nest.js๋ ํจ์จ์ ์ด๊ณ ํ์ฅ ๊ฐ๋ฅํ Node.js ๊ธฐ๋ฐ์ ์๋ฒ ์ดํ๋ฆฌ์ผ์ด์
์ ๊ตฌ์ถํ๊ธฐ ์ํ ํ๋ ์์ํฌ์ด๋ค.์ต์ JavaScript ๋ฌธ๋ฒ์ ํ์ฉํ๋ฉฐ, TypeScript๋ก ์์ ํ ์์ฑ๋๊ณ ์ง์ํ์ง๋ง, ํ์ํ๋ค๋ฉด JavaScript๋ก ๊ฐ๋ฐํ ์ ์๋ค. Nest๋ ๊ฐ์ฒด์งํฅ(OOP), ํจ์ํ ํ๋ก๊ทธ๋๋ฐ(FP), ๋ฐ์ํ ํ๋ก๊ทธ๋๋ฐ(FRP)์ ๊ฐ๋
์ ์กฐํ๋กญ๊ฒ ๊ฒฐํฉํด ๊ฒฌ๊ณ ํ ์๋ฒ ์ดํ๋ฆฌ์ผ์ด์
๊ตฌ์กฐ๋ฅผ ์ ๊ณตํ๋ค. โ๏ธ๋ด๋ถ ๋์Nest๋ ๋ด๋ถ์ ์ผ๋ก Express๋ฅผ ๊ธฐ๋ณธ HTTP ์๋ฒ๋ก ์ฌ์ฉํ์ง๋ง, ์ค์ ๋ง ๋ฐ๊พธ๋ฉด Fastify๋ ์ ํํ ์..