NestJs ๐Ÿฆ

์ตœ์˜ˆ๋‹ฎยท2023๋…„ 1์›” 13์ผ
0
post-thumbnail
post-custom-banner

์–ด์ œ๋Š” ๐Ÿณ Docker , ์˜ค๋Š˜์€ ๐Ÿฆ NestJs ํฌ ํ• ๊ฒŒ ๋งŽ์•„์„œ ์ข‹๋‹ค ์ข‹์•„ ์ง€ํ™”์ž ๐ŸŽŠ

์ง€๊ธˆ ์ด๋ ฅ์„œ๋„ ์“ฐ๊ณ  ์ž๋ฃŒ๊ตฌ์กฐ๋„ ๊ณต๋ถ€ํ•ด์•ผํ•˜๋Š”๋ฐ ์™œ ๐Ÿณ Docker ์— ์ด์–ด์„œ ๐Ÿฆ NestJs ๋„ ํ•˜๋‹ˆ ??

Express ์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•˜๋‹ค๊ฐ€ Express ์— ๋Œ€ํ•œ ๋‹จ์ ์„ ๋ณด๊ฒŒ ๋˜๋ฉด์„œ NestJs ๋„ ๊ผญ ํ•œ๋ฒˆ ํ•ด๋ด์•ผ๊ฒ ๋‹ค ์ƒ๊ฐ์„ํ•ด์„œ ์ด๋ฒˆ์— ์‹ค์ฒœํ•˜๊ฒŒ ๋œ๊ฒƒ์ด๋‹ค.

Express ์žฅ์ 

  • ์›น์„œ๋ฒ„๋ฅผ ๊ฐ€๋ณ๊ณ  ์‰ฝ๊ฒŒ ๋น ๋ฅด๊ฒŒ ๊ตฌํ˜„ํ•˜๊ณ  ๊ตฌ์กฐ์— ๋Œ€ํ•œ ์ž์œ ๋„๋„ ์ƒ๋‹นํžˆ ๋†’๋‹ค.
  • ๊ฐœ๋ฐœ์ž๋“ค์ด ์—ฌ๋Ÿฌ ํˆด, ๊ธฐ์ˆ , ๋ฏธ๋“ค์›จ์–ด ๋“ฑ ๋งˆ์Œ๊ป ์„ ํƒํ•  ์ˆ˜ ์žˆ๋‹ค.

Express ๋‹จ์ 

  • ํ”„๋กœ์ ํŠธ์˜ ๊ทœ๋ชจ๊ฐ€ ์ปค์ง€๊ฒŒ ๋˜๋ฉด ํ†ต์ผ์„ฑ์„ ํ•ด์น˜๊ฒŒ ๋˜์–ด ์–ด์ง€๋Ÿฌ์›€์ด ์œ ๋ฐœ๋  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ ‡๊ธฐ์— ๐Ÿฆ NestJs ๋Š” ์ด๋Ÿฐ ๋ฌธ์ œ๋“ค์„ ๊ฐœ์„ ํ•˜์˜€๋‹ค.

๋ฌผ๋ก  ์ œํ•œ์ด ์ƒ๊ฒผ์ง€๋งŒ ํ†ต์ผ์„ฑ์ด ์ƒ๊ฒผ๊ธฐ์— ์ƒ๋‹นํžˆ ์ข‹๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค.

๊ทธ๋ฆฌํ•˜์—ฌ ๐Ÿฆ NestJs ๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ๋กœ ํ•˜์˜€๋‹ค. ๊ถˆ๊ถˆ๊ถˆ ใ„ฑใ„ฑใ„ฑ

(์ œ๋ฐœ ์•ˆ์–ด๋ ต๊ธธ.. ๋งค๋„ˆ์ ์š”)

์šฐ์„  ๐Ÿฆ NestJs ๊ณต์‹๋ฌธ์„œ๊ฐ€ ์ •๋ง ์ฐธ ์ •๋ฆฌ๋ฅผ ์ž˜ ํ•ด์ฃผ์—ˆ๋‹ค.

์ฃผ์†Œ : https://docs.nestjs.com/

(์•Œ์•„์„œ ๊ตฌ๊ธ€๋ฒˆ์—ญ๊ธฐ ๋Œ๋ ค์„œ ํ•˜์„ธใ…‡ใ…•....)
npm i -g @nestjs/cli

๊ทผ๋ฐ ๋‚˜๋Š” ์‹œ์ž‘๋ถ€ํ„ฐ ์„ค์น˜๊ฐ€ ์•ˆ๋˜์—ˆ๋‹ค... ^^... ์ด๊ฑฐ์Šจ ํ•˜์ง€๋ง๋ผ๋Š” ๊ณ„์‹œ...?

๊ฑฑ์ •๋งˆ์‹œ๐Ÿถ ์ด ์˜ˆ๋‹ฎ๋‹˜๊ป˜์„œ ๋ฐฉ๋ฒ•์„ ์•Œ์•„์™”๋‹ค๊ตฌ !

// ๋งฅ๋ถ ์„ค์น˜์šฉ

sudo npm i -g @nestjs/cli

๊ทธ ๋‹ค์Œ ๊ฐ์ž ๊ฐœ์ธ ๋น„๋ฐ€๋ฒˆํ˜ธ ์ž…๋ ฅํ•˜๊ณ  ๋ฐ›์œผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค ^_^ (์นœ์ ˆ ๊ทธ ์žก์ฑ„)

nest new project-name(์—ฌ๊ธฐ์—๋Š” ์ž๊ธฐ๊ฐ€ ํ•˜๊ณ ์‹ถ์€ ์ด๋ฆ„์œผ๋กœ)

๊ทธ ๋‹ค์Œ ๋‚˜๋Š” npm ์œผ๋กœ ์„ค์น˜ํ•˜์˜€๋‹ค.

(์ € ๋ฐ‘์— ๋‘๊ฐœ๋Š” ์ž˜ ํ• ์ค„ ๋ชฐ๋ผ์—ฌ ....)

๊ทธ๋Ÿผ ์ด๋ ‡๊ฒŒ ์ž๋™์œผ๋กœ ๋‹ค ๋‹ค์šด๋กœ๋“œ ๋ฐ›์•„์ง„๋‹ค... ์™€ ๐Ÿถ์ฉ๋‹ค... ๊ทธ๋ฆฌ๊ณ  ๋ฐ”๋กœ

npm run start:dev

๋ฅผ ํ•˜๊ฒŒ ๋˜๋ฉด

๋ฐ”๋กœ ์‹คํ–‰์ด ๋˜๊ณ  ๋‚˜ ์•„๋ฌด๊ฒƒ๋„ ์•„์ง ์•ˆํ–ˆ๋Š”๋ฐ ๋ฐ”๋กœ Get์ด ๋ถˆ๋Ÿฌ์™€์ง„๋‹ค....

์—ฌ๊ธฐ ์—ฌ๊ธฐ main.ts ๊ฐ€ ์Œ express ๊ธฐ์ค€์œผ๋กœ๋Š” app.js ์—ญํ• ์„ ํ•œ๋‹ค๊ณ  ๋ณด๋ฉด ๋ ๊ฑฐ๊ฐ™์•„์šฉ ~ ์บฌ ์ €๊ธฐ์„œ ๋ฐ”๋กœ 3000๋ฒˆ์ด ์ผœ์ง€์ฅฌ ?

์•„๋‹ˆ ๊ทผ๋ฐ Hello World ๋Š” ์ž‘์„ฑ๋„ ์•ˆํ–ˆ๋Š”๋”” ์–ด๋””์„œ ๊ฐ€์ง€๊ณ  ์˜จ๊ฒจ?

5๋ฒˆ์งธ ์ค„์— AppModule ๋ณด์ด์ฃต? ์ €๊ธฐ๊ฐ€ express ๋กœ๋Š” route ๊ธฐ๋Šฅ์„ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ํ•œ๋ฒˆ ํƒ€๊ณ  ๋“ค์–ด๊ฐ€๋ณด์ฃ  !

์˜ค์˜ค ... ์ƒˆ๋กœ์šด ์„ธ์ƒ์ด๋‹ค ์ƒˆ๋กœ์šด์„ธ์ƒ์ด์—ฌ ...๐Ÿ˜ตโ€๐Ÿ’ซ ํ•˜์ง€๋งŒ ๊ฒ๋จน์ง€ ๋งˆ์„ธ์š” ์šฉ์‚ฌ์—ฌ ์šฐ์„  ์—ฌ๊ธฐ์—์„œ AppController ๋กœ ๋“ค์–ด๊ฐ€ ๋ด…์‹œ๋‹ค !

3 ๋ ˆ์ด์–ด๋“œ ํ•˜์‹  ๋ถ„๋“ค์€ ๋Œ€์ถฉ ์–ด๋–ค ์—ญํ• ์„ ํ•˜๋Š”์ง€ ๊ฐ์ด ์˜ค์‹ค๊ฑฐ์—์š” ! ๋“ค์–ด๊ฐ€๊ฒŒ๋˜๋ฉด ! ์—ฌ๊ธฐ๋Š” express ์˜ ๋ผ์šฐํ„ฐ ๊ฐ™์€ ์กด์žฌ๋ผ๊ณ  ์ƒ๊ฐํ•˜์‹œ๋ฉด ๋ ๊ฑฐ ๊ฐ™์•„์š”!

๊ทผ๋ฐ @ ์ด๊ฑฐ ๋ญ๋ƒ ์ง„์งœ ?

@ <- ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ ๋ผ๊ณ  ๋งํ•ฉ๋‹ˆ๋‹น ๐Ÿ˜‰

๋ฐ์ฝ”๋ ˆ์ดํ„ฐ : ํด๋ž˜์Šค์— ํ•จ์ˆ˜ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์–ด์š” !

๋Œ€์‹  ์ค‘๊ฐ„์— ๊ณต๋ฐฑ์ด ์žˆ์œผ๋ฉด ์•ˆ๋˜๊ณ  ๋ฐ”๋กœ ๋ฐ‘์— ์ž‘์„ฑํ•ด์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค !

์ž ๊ทธ๋ž˜์„œ @Get() ์€ express ๋กœ ๋งํ•˜๋ฉด router.get() ์ด๋ผ๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์„๊ฑฐ ๊ฐ™์•„์š” !

์™€... ๊ทผ๋ฐ ์—ฌ๊ธฐ๋Š” ๋ฐ”๋กœ ํƒ€์ž…์„ ์ง€์ •ํ•ด๋ฒ„๋ฆฌ๋„ค... ์ฉ๋‹ค ... ์ด๊ฒŒ ๋ฐ”๋กœ ์‚ฌ์Šค๊ฐ€ ํ†ต์ผ์„ฑ ์ธ๊ฐ€..?

ใ…‹ใ…‹ใ…‹ใ…‹ ์–ด์จŒ๋“  ์ €ํฌ๊ฐ€ ์œ ์ถ”ํ•  ์ˆ˜ ์žˆ๋Š”๊ฑด Hello World ๊ฐ€ ์ €๊ธฐ ํ•จ์ˆ˜์—์„œ ์™”๋‹ค๋Š”๊ฑธ ์œ ์ถ”ํ•ด๋ณผ ์ˆ˜ ์žˆ๊ฒ ๋„ค์š” ์šฐ๋ฆฌ ํ•œ๋ฒˆ ๋˜ ํƒ€๊ณ  ๊ฐ€๋ด…์‹œ๋‹ค.

์—ฌ๊ธฐ ์žˆ์—ˆ๋„ค ์™€ ์ด๊ฑฐ ์ง„์งœ 3 ๋ ˆ์ด์–ด๋“œ ํ–ˆ์„๋•Œ๋ž‘ ๋น„์Šทํ•œ๋ฐ ?!!!

๋‚˜๋Š” ์•„๋ฌด๊ฒƒ๋„ ์•ˆํ–ˆ๋Š”๋ฐ ๊ทธ๋ƒฅ ๋งŒ๋“ค์–ด์ง„ ํ•จ์ˆ˜์— Hello World๊ฐ€ ๋˜์–ด์žˆ๋‹ค๋‹ˆ... ์‚ฌ๋ž‘ํ•ด NesJs

๊ทธ๋Ÿผ ์ด๋ฒˆ์—๋Š” url ๊ฒฝ๋กœ๋ฅผ ์ฃผ๊ณ  ๋‹ค๋ฅธ ๋ฌธ์žฅ์„ ์ ์–ด๋ณด์ž

(ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹)
// app.controller.ts

  @Get("test")
  getTest(): string {
    return this.appService.getTest();
  }
// app.service.ts

  getTest(): string {
    return "์ตœ์˜ˆ๋‹ฎ ๋ฒจ๋กœ๊ทธ ๋„ค์ŠคํŠธ ์‚ฌ๋ž‘ํ•ด(ํ•˜ํŠธ)(์ฐก๊ธ‹)"
  }

์ด๋ ‡๊ฒŒ ์ž‘์„ฑํ•˜๋ฉด ์œ„์— ์ฃผ์†Œ์ฒ˜๋Ÿผ ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค (์ฐก๊ธ‹)

์ด๋Ÿฐ์‹์œผ๋กœ CRUD๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค

(.... ์ € ์—ด์‹ฌํžˆ ์ ์—ˆ๋Š”๋ฐ ์กธ๋ฉด์„œ ๋ณธ๊ฑฐ ์•„๋‹ˆ์ฃ ...?)

์ž ์˜ค๋Š˜ ๊ฐ€๋ณ๊ฒŒ NestJs ์— ๋Œ€ํ•ด ์‚ดํŽด ๋ณด์•˜๋‹ค.

๋‹คํ–‰ํžˆ ์•„์ง๊นŒ์ง€๋Š” ์—„์ฒญ ์–ด๋ ต์ง€๋Š” ์•Š์•˜๋‹ค. 3 ๋ ˆ์ด์–ด๋“œ๋ž‘๋„ ๋น„์Šทํ•˜๊ตฌ ...

๋‹ค์Œ์‹œ๊ฐ„์—๋Š” GraphQL ํ†ตํ•ด CRUD ๋ฅผ ๋งŒ๋“ค์–ด ๋ณผ๊ฑฐ์—์šฉ

์žฌ๋ฏธ์žˆ์—ˆ์œผ๋‹ˆ๊นŒ ๋‹ค์ŒํŽธ๋„ ๋ณด๋Ÿฌ์™€์š” ^___^ ๊ทธ๋Ÿผ ์•ˆ๋‡ฝ

profile
์‚ฐ์„ ์˜ค๋ฅด๋ ค๊ณ  ํ•˜๋Š”๋ฐ ์ด์ œ ์ฃผ์ฐจ์žฅ์— ๋ง‰ ์ฃผ์ฐจํ•œ ์ดˆ๋ณด๊ฐœ๋ฐœ์ž
post-custom-banner

0๊ฐœ์˜ ๋Œ“๊ธ€