[Express] Express๋ž€?

jihan kongยท2022๋…„ 4์›” 5์ผ
0

Express

๋ชฉ๋ก ๋ณด๊ธฐ
1/1
post-thumbnail

๐Ÿ“Œ Nodejs, ๊ทธ๋ฆฌ๊ณ  Express์˜ ๋“ฑ์žฅ

2009๋…„ Ryan Dahl์— ์˜ํ•ด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋Ÿฐํƒ€์ž„ Nodejs๊ฐ€ ๊ฐœ๋ฐœ๋˜๋ฉด์„œ ๊ธฐ์กด์˜ Web browser๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ์–ธ์–ด์ธ JavaScript ๋กœ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๋ฅผ ๋ณด๋‹ค ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค. ๊ทธ ๊ฒฐ๊ณผ Nodejs๋Š” ์„ ํ’์ ์ธ ์ธ๊ธฐ๋ฅผ ๋Œ๋ฉฐ ์ˆ˜ ๋งŽ์€ ๊ฐœ๋ฐœ์ž๋“ค์—๊ฒŒ ์ง€๊ธˆ๊นŒ์ง€๋„ ์‚ฌ๋ž‘๋ฐ›๋Š” ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ œ์ž‘ ์†Œํ”„ํŠธ์›จ์–ด๋กœ ์ž๋ฆฌ์žก๊ฒŒ ๋˜์—ˆ๋‹ค.

but... ๊ฑฐ๊ธฐ์„œ ์‰ฝ๊ฒŒ ๋งŒ์กฑํ•  ๊ฐœ๋ฐœ์ž๋“ค์ด ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์„ ์šฐ๋ฆฌ ๋ชจ๋‘๋Š” ์ž˜ ์•Œ๊ณ  ์žˆ๋‹ค.

ํ•ญ์ƒ ๋ณต์žกํ•˜๊ณ  ๋ฐฉ๋Œ€ํ•œ ๊ฒƒ๋ณด๋‹ค ์‰ฝ๊ณ  ๊ฐ„๋‹จํ•œ ๊ฒƒ์„ ์ข‹์•„ํ•˜๋Š” ์ด ๋Œ€๋‹จํ•œ ์‚ฌ๋žŒ๋“ค์€ ์ด๋‚ด ๋ถˆํŽธํ•œ ์ ์„ ์ฐพ๊ฒŒ ๋˜์—ˆ๋Š”๋ฐ ๊ทธ๊ฒƒ์€ nodejs๊ฐ€ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฆ‰, ์„œ๋ฒ„๋ฅผ ๊ตฌํ˜„ํ•จ์— ์žˆ์–ด์„œ ๊ณ ๋ คํ•ด์•ผํ•  ์‚ฌํ•ญ (HTTP request, ์ฟ ํ‚ค ํŒŒ์‹ฑ, ์„ธ์…˜๊ด€๋ฆฌ, ๋ผ์šฐํŒ… ๊ตฌ์„ฑ ๋“ฑ๋“ฑ...) ์ด ๋„ˆ๋ฌด ๋งŽ๋‹ค๋Š” ๊ฒƒ์—์„œ ๋น„๋กฏ๋œ ํˆฌ๋ฐ•ํ•˜๊ณ  ์„ธ๋ จ๋˜์ง€ ๋ชปํ•จ์ด์—ˆ๋‹ค.

์ด ๋ฐฉ๋Œ€ํ•œ ์–‘์˜ ์ฝ”๋“œ์™€ ๋ณต์žกํ•œ ์ž‘๋™์›๋ฆฌ๋ฅผ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐœ๋ฐœ์ž๋“ค์€ ๊ถ๋ฆฌํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ๊ณ .. ๊ทธ ๊ฒฐ๊ณผ ์™„๋ฒฝํžˆ Nodejs ์œ„์—์„œ ๋™์ž‘ํ•˜๋Š” ์›น ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๋งŒ๋“ค์–ด๋‚ด๊ฒŒ ๋˜์—ˆ๋Š”๋ฐ, ๊ทธ๊ฒƒ์ด ๋ฐ”๋กœ "Express" ์ด๋‹ค.

๐Ÿ”จ Framework

Express๋Š” ํ”„๋ ˆ์ž„์›Œํฌ์ด๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ๋ฌด์—‡์ผ๊นŒ?

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

Framework๋Š” ๋†€๋ž๊ฒŒ๋„ ์ด๋ ‡๊ฒŒ ๊ท€์ฐฎ๊ณ  ๋ณต์žกํ•œ ์ผ์„ ๋ฏธ๋ฆฌ ๊ธฐ๋Šฅ์ ์œผ๋กœ ๋งˆ๋ จํ•ด์ฃผ๋Š” tool์ด๋‹ค. ํ•œ ๋งˆ๋””๋กœ ์šฐ๋ฆฌ์˜ ํ”„๋กœ๊ทธ๋žจ์„ ์‰ฝ๊ฒŒ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ์š”์†Œ์™€ ๊ทœ์•ฝ, ๋ฃฐ ๋“ฑ์„ Framework๊ฐ€ ์ œ๊ณตํ•ด ์ฃผ๋Š” ๊ฒƒ์ด๋‹ค. ์ด์ œ ๋ณต์žกํ•˜๊ณ  ์–ด๋ ค์šด ์ผ๋“ค์€ Framework๋ฅผ ํ†ตํ•ด ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๊ณ , ๊ฐœ๋ฐœ์ž๋Š” ์›น ์‚ฌ์ดํŠธ์˜ ๊ฐœ์„ฑ์ ์ธ ๋ถ€๋ถ„๊ณผ ์„œ๋น„์Šค์™€ ๊ฐ™์€ ํŒŒํŠธ์— ๋”์šฑ ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค.

๐ŸŒ  Express์˜ ํŠน์ง•

Express๋Š” nodejs์—์„œ ๊ฐ€์žฅ ๋ณดํŽธ์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ํ”„๋ ˆ์ž„ ์›Œํฌ ์ค‘ ํ•˜๋‚˜์ด๋‹ค. Express๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋งค์ปค๋‹ˆ์ฆ˜์„ ์ œ๊ณตํ•˜๊ฒŒ ๋œ๋‹ค.

  • HTTP ํ†ต์‹  ์š”์ฒญ(Request; GET, POST, DELETE ๋“ฑ)์— ๋Œ€ํ•œ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ๋งŒ๋“ ๋‹ค.
  • ํ…œํ”Œ๋ฆฟ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์–ด ์‘๋‹ต(response)์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด view์˜ ๋ Œ๋”๋ง ์—”์ง„๊ณผ ๊ฒฐํ•ฉ(integrate)ํ•œ๋‹ค.
  • ์ ‘์†์„ ์œ„ํ•œ ํฌํŠธ๋‚˜ ์‘๋‹ต ๋ Œ๋”๋ง์„ ์œ„ํ•œ ํ…œํ”Œ๋ฆฟ ์œ„์น˜๊ฐ™์€ ๊ณตํ†ต ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ธํŒ…์„ ํ•œ๋‹ค.
  • ํ•ธ๋“ค๋ง ํŒŒ์ดํ”„๋ผ์ธ(reqest handling pipeline) ์ค‘ ํ•„์š”ํ•œ ๊ณณ์— ์ถ”๊ฐ€์ ์ธ ๋ฏธ๋“ค์›จ์–ด ์ฒ˜๋ฆฌ ์š”์ฒญ์„ ์ถ”๊ฐ€ํ•œ๋‹ค.

์ด์™ธ์—๋„ ๋งŽ์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์ด ํƒ‘์žฌ๋˜์–ด์žˆ๋‹ค.

(์ถœ์ฒ˜: https://developer.mozilla.org/ko/docs/Learn/Server-side/Express_Nodejs/Introduction)




๊ทธ ์ค‘์—์„œ๋„ ํŠนํžˆ, ๋ผ์šฐํ„ฐ(router) ๋ผ๋Š” ๋ฉ”์†Œ๋“œ์˜ ์ฝœ๋ฐฑํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„์™€ ํ†ต์‹ ํ•˜๋Š” ๋ฐฉ์‹์€ ์ •๋ง ์‰ฝ๊ณ  ํŽธ๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋งŽ์€ ์œ ์ €๋“ค์ด ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค.

router

app.get('/', function (req, res) {
  res.send('Hello World!');
});

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

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

profile
ํ•™์Šตํ•˜๋ฉฐ ๋„์ „ํ•˜๋Š” ๊ฒƒ์„ ์ฆ๊ธฐ๋Š” ๊ฐœ๋ฐœ์ž

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