์ฑ„๋„ํ†ก ์•„์ด์ฝ˜

Express ํŠœํ† ๋ฆฌ์–ผ : ์›น ์„œ๋น„์Šค๋ฅผ ์œ„ํ•œ ํ•ต์‹ฌ API

Express๋ฅผ ํ†ตํ•ด Node ํ™˜๊ฒฝ์—์„œ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•œ ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•ฉ๋‹ˆ๋‹ค. CRUD Service, User Authentication ๋“ฑ์„ ๋‹ค๋ฃจ๋ฉด์„œ ํ•™์Šตํ•ด๋ด…๋‹ˆ๋‹ค.

Thumbnail

์ดˆ๊ธ‰์ž๋ฅผ ์œ„ํ•ด ์ค€๋น„ํ•œ
[๋ฐฑ์—”๋“œ, ์›น ๊ฐœ๋ฐœ] ๊ฐ•์˜์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฐ ๊ฑธ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์–ด์š”

  • Node

  • Express

  • MongoDB

  • Mongoose

Node ํ™˜๊ฒฝ์—์„œ express๋ฅผ ์‚ฌ์šฉํ•ด
์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•ด๋ด์š”! ๐Ÿšฉ

๊ฐ•์˜๋ฅผ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค ๐Ÿ’ป

๊ฐ•์˜์—์„œ ์ด๋Ÿฐ ๊ฑธ ๋ฐฐ์›Œ๋ด์š” ๐Ÿ‘จโ€๐Ÿซ๐Ÿ“™

  • Node/Express ์„œ๋ฒ„ ๊ตฌํ˜„
  • NoSQL DB๋ฅผ ํ™œ์šฉํ•œ CRUD ์„œ๋น„์Šค ๊ตฌํ˜„ with MongoDB, Mongoose
  • RDB๋ฅผ ํ™œ์šฉํ•œ CRUD ์„œ๋น„์Šค ๊ตฌํ˜„ with PostgresQL
  • Session-based User Authentication ๊ตฌํ˜„ with Passport
  • Json Web Token ๊ธฐ๋ฐ˜ User Authentication ๊ตฌํ˜„ with JWT


ํ•ญ์ƒ ์‚ฌ์šฉ์ž์˜ ์ž…์žฅ์— ์„œ์„œ

์ฝ”๋”ฉ์„ ํŠผํŠผํ•˜๊ฒŒ ๐Ÿฆพ

์–ด๋– ํ•œ ์–ธ์–ด๋ฅผ ํ•™์Šตํ•˜๋“ , ์–ด๋– ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋น„์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋“ , ๊ฐœ๋ฐœ์ž๋Š” ํ•ญ์ƒ ์‚ฌ์šฉ์ž์˜ ์ž…์žฅ์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ํ™˜๊ฒฝ์—์„œ ์ƒˆ๋กœ์šด ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋‚ด๋”›๋Š” ์ฒซ ๊ฑธ์Œ์€ ์–ธ์ œ๋‚˜ ํž˜๋“ค๊ณ  ๋‚ฏ์„ค๊ธฐ์—, ํ•˜๋‚˜์˜ ์„œ๋น„์Šค๋ฅผ ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ตฌํ˜„ํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ๋Š˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋ณธ ๊ฐ•์˜์˜ ๊ฐ€์žฅ ํฐ ํŠน์ง•์€ ๊ฐ™์€ ์„œ๋น„์Šค๋ผ ํ•˜๋”๋ผ๋„, ๋‹ค์–‘ํ•œ ๋„๊ตฌ๋ฅผ ํ†ตํ•ด ์—ฌ๋Ÿฌ ๋ฐฉ๋ฒ•์œผ๋กœ ๋ฐ˜๋ณตํ•˜์—ฌ ๊ตฌํ˜„ํ•œ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ์„œ๋ฒ„์˜ ์—ญํ•  ์ค‘ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋ถ€๋ถ„์— ๋Œ€ํ•ด ์ƒํ™ฉ์— ๋งž๋„๋ก ๋„๊ตฌ๋ฅผ ์„ ํƒํ•˜์—ฌ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋‚˜์ค‘์— ์ƒˆ๋กœ์šด ํ™˜๊ฒฝ์— ๋งž๋‹ฅ๋œจ๋ฆฌ๊ฒŒ ๋˜๋”๋ผ๋„ ํŠผํŠผํ•œ ๊ธฐ์ดˆ์ฒด๋ ฅ์ด ๋˜์–ด ์ค„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.


ํ•™์Šตํ•  ๋‚ด์šฉ ๋ง›๋ณด๊ธฐ โœ๏ธ

1. Hello, Node / Express

์„œ๋ฒ„ ์˜์—ญ์—์„œ Javascript๋ฅผ ์ปดํŒŒ์ผํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์  ๋•Œ๋ฌธ์— Node ํ™˜๊ฒฝ์˜ ์ธ๊ธฐ๋Š” ๋†’์Šต๋‹ˆ๋‹ค. ์ด Node ๊ธฐ๋ฐ˜ ์„œ๋ฒ„์— ๋Œ€ํ•ด ์ดํ•ดํ•˜๊ณ , ์„œ๋ฒ„๋ฅผ ์ง์ ‘ ๊ตฌ์ถ•ํ•˜๊ณ , ํด๋ผ์ด์–ธํŠธ์™€ ์ง์ ‘ ํ†ต์‹ ํ•ด๋ณด๋Š” ๊ณผ์ •๊ณผ ํ•จ๊ป˜ express๋ฅผ ์œ„ํ•œ ํ…œํ”Œ๋ฆฟ ์—”์ง„ ejs์™€ pug๋ฅผ ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค.

2. Hello, CRUD (with NoSQL, RDB)

NoSQL๊ณผ RDB ์ค‘ ํ•˜๋‚˜์˜ DB๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒƒ์€ ๊ฐœ๋ฐœ์ž์˜ ์˜ค๋žœ ์ˆ™๋ช…์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ๊ฐ์˜ DB๊ฐ€ ๊ฐ€์ง€๋Š” ์žฅ์ ์€ ๋ถ„๋ช…ํ•˜๊ณ , ๊ฐœ๋ฐœ ํ™˜๊ฒฝ๊ณผ ์ƒํ™ฉ์— ๋”ฐ๋ผ ์‚ฌ์šฉํ•ด๋ณด๋ฉฐ ๊ฐ ํŠน์ง•์— ๋งž๋Š” DB๋Š” ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ์ตœ๊ทผ ์—ฌ๋Ÿฌ ๋ถ„์•ผ์—์„œ ๊ฐ๊ด‘๋ฐ›๋Š” MongoDB (NoSQL)์™€ PostgresQL (RDB)๋ฅผ ์ง์ ‘ ๋‹ค๋ค„๋ด…๋‹ˆ๋‹ค.

3. User Authentication

์ตœ๊ทผ์—๋Š” ๋ณด์•ˆ, ํŽธ์˜์„ฑ, ํ™•์žฅ ๋“ฑ์˜ ์ด์œ ๋กœ ์‚ฌ์ดํŠธ ๊ฐ€์ž… ์‹œ ์œ ๋ช…ํ•œ ํ”Œ๋žซํผ์˜ ์ธ์ฆ์„ API๋กœ ๊ตฌํ˜„ํ•˜๋Š” ์ถ”์„ธ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋Ÿฐ OAuth๋ฅผ ๋„์ž…ํ•ด๋„ ๊ทธ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๋Š” ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„์•ผ ์ธ์ฆ์˜ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ–๊ณ ์™€์„œ ์„ธ์…˜๊ณผ ํ† ํฐ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

4. Scale-up & Bonus Lecture

์„œ๋ฒ„์˜ ํ•ต์‹ฌ ๋ถ€๋ถ„๊ณผ ๋”๋ถˆ์–ด ๋งŽ์€ ๋ถ„๋“ค์ด ์ด์ „ ๊ฐ•์˜์—์„œ ์š”์ฒญํ•ด์ฃผ์‹ , ํ”„๋กœ์ ํŠธ์— ์„œ๋ฒ„์™€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋„์ž…ํ•˜๋Š” ๋ณด๋„ˆ์Šค ๊ฐ•์˜๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ํŒ์ฝ”์™€ ํ•จ๊ป˜ํ•˜๋Š” MBTI ์‚ฌ์ดํŠธ ๋งŒ๋“ค๊ธฐ์—์„œ ์ฐธ์กฐํ•ด์ฃผ์„ธ์š”.

์ด๋Ÿฐ ๋ถ„์ด๋ผ๋ฉด ๋“ค์–ด๋ณด์„ธ์š”! ๐Ÿคš

๋‚˜๋งŒ์˜ ์›น์„œ๋น„์Šค๋ฅผ
๋งŒ๋“ค๊ณ ์‹ถ์€ ๋ถ„

์„œ๋ฒ„์˜ ํ•ต์‹ฌ๊ธฐ๋Šฅ์„
๋ฐฐ์šฐ๊ณ ์‹ถ์€ ๋ถ„

์„œ๋ฒ„๋ฅผ ๋งŒ๋“œ๋Š” ๋‹ค์–‘ํ•œ
ํ™˜๊ฒฝ์„ ์•Œ๊ณ ์‹ถ์€ ๋ถ„


์˜ˆ์ƒ ์งˆ๋ฌธ Q&A ๐Ÿ’ฌ

Q. ์ด ๊ฐ•์˜๋ฅผ ํ†ตํ•ด ์›น ์„œ๋ฒ„ ๊ฐœ๋ฐœ์— ์ž…๋ฌธํ•ด๋„ ๋ ๊นŒ์š”?

๋ณธ ๊ฐ•์˜๋Š” ์„œ๋ฒ„ ์ž…๋ฌธ์ž๋ฅผ ๋Œ€์ƒ์œผ๋กœ ๊ธฐํš๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ž…๋ฌธ์šฉ ๊ฐ•์˜์ด๊ธด ํ•˜์ง€๋งŒ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•œ ์„œ๋ฒ„์˜ ํ•ต์‹ฌ์ ์ธ ๊ธฐ๋Šฅ์„ ๋‹ค๋ฃจ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚œ์ด๋„๋ณ„, ๋‹จ๊ณ„๋ณ„๋กœ Express๋ฅผ ๋‹ค๋ฃจ๋ฉฐ ๋ณธ ๊ฐ•์˜๋ฅผ ํ†ตํ•ด ์‹ค์ œ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•œ ์„œ๋ฒ„ ๊ตฌ์ถ•์˜ ๋ ˆ๋ฒจ๊นŒ์ง€ ์ˆ˜๊ฐ•์ƒ๋ถ„๋“ค์ด ์„ฑ์žฅํ•˜์‹ค ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋ผ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค.

์ถ”๊ฐ€์ ์œผ๋กœ, ๊ฐ•์˜๋ฅผ ๋“ค์œผ์‹œ๋ฉด์„œ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์€ ๊ธฐ๋Šฅ์ด ์žˆ๋‹ค๋ฉด ์งˆ๋ฌธ์„ ํ™œ์šฉํ•ด์ฃผ์„ธ์š”. ๋งŽ์€ ์ˆ˜๊ฐ•์ƒ๋“ค์ด ์›ํ•˜์‹œ๋Š” ๋ถ€๋ถ„์ด๋ผ๋ฉด ๊ฐ•์˜๋ฅผ ์ œ์ž‘ํ•ด ํƒ‘์žฌํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

Q. ์ €๋Š” ์›น๊ฐœ๋ฐœ ๊ฒฝํ—˜์ด ์—†๋Š”๋ฐ ๊ดœ์ฐฎ์„๊นŒ์š”?

๊ธฐ์ดˆ์ ์ธ HTML๊ณผ CSS ์ง€์‹์ด ์žˆ์œผ๋ฉด ๋ณธ ๊ฐ•์˜๋ฅผ ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•˜์‹ค ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. Express๋ฅผ ์œ„ํ•œ view engine์œผ๋กœ Pug์™€ EJS๋ฅผ ๋‹ค๋ฃจ๋Š” ๋ฐ, ๋‘ ํ…œํ”Œ๋ฆฟ ์—”์ง„ ๋ชจ๋‘ ๋ผˆ๋Œ€๋Š” HTML๊ณผ ๋™์ผํ•˜๊ธฐ์— ๊ธฐ์ดˆ์ ์ธ ์ง€์‹์ด ์—†๋‹ค๋ฉด ์–ด๋ ต๊ฒŒ ๋Š๊ปด์ง€์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ, ๋†’์€ ์ˆ˜์ค€์˜ ์ง€์‹์„ ์š”๊ตฌ๋˜์ง€๋Š” ์•Š๊ธฐ์— ๊ฐ„๋‹จํ•œ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ฒฝํ—˜ํ•˜์‹œ๋ฉฐ HTML/CSS ๊ธฐ์ดˆ๋ฅผ ์ตํžˆ์‹œ๊ธธ ๊ถŒ์žฅํ•ด๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์ด๋ฒˆ ๋ณด๋„ˆ์Šค ๊ฐ•์˜์™€ ์—ฐ๊ณ„๋˜๊ธฐ๋„ ํ•˜๋Š” [ํ•˜๋ฃจ10๋ถ„|Web Project] HTML/JS/CSS๋กœ ๋‚˜๋งŒ์˜ ์‹ฌ๋ฆฌํ…Œ์ŠคํŠธ ์‚ฌ์ดํŠธ ๋งŒ๋“ค๊ธฐ๋Š” ์–ด๋–จ๊นŒ์š”?

Q. ์–ด๋Š ์ •๋„์˜ Javascript ์„ ์ˆ˜์ง€์‹์ด ํ•„์š”ํ• ๊นŒ์š”?

Node/Express ๋ชจ๋‘ Javascript๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ์ดˆ์ ์ธ ์ง€์‹์€ ์š”๊ตฌ๋ฉ๋‹ˆ๋‹ค. (๊ณต์‹๋ฌธ์„œ๋ฅผ ์ฒจ๋ถ€ํ•ด๋“œ๋ ค์š”.) ํ•˜์ง€๋งŒ ๋‹จ์ˆœํžˆ ์ƒ๊ฐํ•˜๋ฉด ๊ทธ์ € Javascript์ผ ๋ฟ ๊ทธ ์ด์ƒ ๊ทธ ์ดํ•˜๋„ ์•„๋‹™๋‹ˆ๋‹ค. ํ•˜์—ฌ, ๊ณต์‹๋ฌธ์„œ์— ์š”๊ตฌ๋˜๋Š” ์ง€์‹์ด ์—†๋‹ค ํ•˜๋”๋ผ๋„ object๋ฅผ ํฌํ•จํ•œ js์˜ ๊ธฐ์ดˆ์ ์ธ ์ž๋ฃŒํ˜•๊ณผ return, ํ•จ์ˆ˜ block์˜ ์œ ํšจ๋ฒ”์œ„ ๋“ฑ ํ•จ์ˆ˜์˜ ์‚ฌ์šฉ๋ฒ•์ธ์ž๋งŒ ์•Œ๊ณ  ๊ณ„์‹ ๋‹ค๋ฉด ์ถ”๊ฐ€์ ์ธ ๋ฌธ๋ฒ• ์„ค๋ช…์€ ๊ฐ•์˜์— ๋…น์•„์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฐ ๋ถ„๋“ค๊ป˜
์ถ”์ฒœ๋“œ๋ ค์š”!

ํ•™์Šต ๋Œ€์ƒ์€
๋ˆ„๊ตฌ์ผ๊นŒ์š”?

  • '์„œ๋ฒ„'๋ฅผ ์ฒ˜์Œ ์ž…๋ฌธํ•˜์‹œ๋Š” ๋ถ„

  • ๋‚˜๋งŒ์˜ ์›น ์„œ๋ฒ„๋ฅผ ์ œ์ž‘ํ•˜๊ณ  ์‹ถ์œผ์‹  ๋ถ„

  • ๋น ๋ฅด๊ฒŒ ์„œ๋ฒ„์˜ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์„ ํ•™์Šตํ•˜๊ณ  ์‹ถ์œผ์‹  ๋ถ„

  • ์„œ๋ฒ„๋ฅผ ๋งŒ๋“œ๋Š” ๋‹ค์–‘ํ•œ ํ™˜๊ฒฝ์„ ๋ฐฐ์šฐ๊ณ  ์‹ถ์œผ์‹  ๋ถ„

์„ ์ˆ˜ ์ง€์‹,
ํ•„์š”ํ• ๊นŒ์š”?

  • JavaScript (ES6+)

  • HTML ๊ธฐ์ดˆ

์•ˆ๋…•ํ•˜์„ธ์š”
ํŒ๋‹ค์ฝ”๋”ฉ์ž…๋‹ˆ๋‹ค.

21,272

๋ช…

์ˆ˜๊ฐ•์ƒ

508

๊ฐœ

์ˆ˜๊ฐ•ํ‰

268

๊ฐœ

๋‹ต๋ณ€

4.8

์ 

๊ฐ•์˜ ํ‰์ 

6

๊ฐœ

๊ฐ•์˜

๋ฌธ์˜ : nani6765@gmail.com

์ปค๋ฆฌํ˜๋Ÿผ

์ „์ฒด

55๊ฐœ โˆ™ (6์‹œ๊ฐ„ 50๋ถ„)

ํ•ด๋‹น ๊ฐ•์˜์—์„œ ์ œ๊ณต:

์ˆ˜์—…์ž๋ฃŒ
๊ฐ•์˜ ๊ฒŒ์‹œ์ผ: 
๋งˆ์ง€๋ง‰ ์—…๋ฐ์ดํŠธ์ผ: 

์ˆ˜๊ฐ•ํ‰

์ „์ฒด

2๊ฐœ

5.0

2๊ฐœ์˜ ์ˆ˜๊ฐ•ํ‰

  • wonjinYi

    โˆ™

    ์ˆ˜๊ฐ•ํ‰ 9

    โˆ™

    ํ‰๊ท  ํ‰์  5.0

    5

    84% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

    ์‹ค์šฉ์ ์ธ ๋‚ด์šฉ๋งŒ ๊ฐ„๋‹จํžˆ ๋‹ด๊ฒจ์žˆ๋Š” ์ข‹์€ ๊ฐ•์˜์ž…๋‹ˆ๋‹ค. ๋‹ค๋งŒ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์—…๋ฐ์ดํŠธ๋˜๋ฉด์„œ ์•ฝ๊ฐ„ ๋ฏธ๋ฌ˜ํ•˜๊ฒŒ ๋‹ฌ๋ผ์ง„ ๋‚ด์šฉ์ด ์žˆ๋Š”๋ฐ, ๊ทธ๊ฒƒ๋งŒ ์ฃผ์˜ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ œ๊ฐ€ ๋ฐŸ์€ ์ง€๋ขฐ๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ-์ž์œ ์ฃผ์ œ์— ๋‚จ๊ฒจ๋‘์—ˆ์Šต๋‹ˆ๋‹ค.

    • berrycore

      โˆ™

      ์ˆ˜๊ฐ•ํ‰ 5

      โˆ™

      ํ‰๊ท  ํ‰์  5.0

      5

      62% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

      Express ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ์ ์ธ ์‚ฌ์šฉ๋ฒ•์„ ์ตํž ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. mongoDB ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ RDB (PostgreSQL) ๋„ ๊ฐ™์ด ์‹ค์Šตํ•  ์ˆ˜ ์žˆ์–ด์„œ ์ข‹์•˜์Šต๋‹ˆ๋‹ค. ๋งŽ์€ ๋„์›€์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

      โ‚ฉ38,500