๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
โœ๏ธ 21-2 IPP/Node.js study

Node.js - 4 http ๋ชจ๋“ˆ

by hanwitjus 2021. 10. 14.

Node.js๋ฅผ ์„ค์น˜ํ•  ๋•Œ ํ•ต์‹ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋„ ๊ฐ™์ด ์„ค์น˜๋๋‹ค.

 

Node.js์˜ ๋ชจ๋“ˆ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ํŠน์ • ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•  ์ฝ”๋“œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‹ค. 

ํ•ต์‹ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค ์ค‘, http๋ผ๋Š” ๋ชจ๋“ˆ์ด ์žˆ๋Š”๋ฐ, ์ด ๋ชจ๋“ˆ๋กœ ์›น ์„œ๋ฒ„ ๊ตฌ์ถ•์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

http ๋ชจ๋“ˆ์€ HTTP๋ฅผ ์‚ฌ์šฉํ•ด ์›น๊ณผ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ํ•˜๋„๋ก ๋„์™€์ค€๋‹ค.

 

http ๋ชจ๋“ˆ์˜ http-status-codes ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์‘๋‹ต์—์„œ HTTP ์ƒํƒœ ์ฝ”๋“œ๊ฐ€ ํ•„์š”ํ•œ ๊ณณ์— ์‚ฌ์šฉํ•  ์ƒ์ˆ˜๋ฅผ ์ œ๊ณตํ•œ๋‹ค. 

 

 

๋จผ์ € ์ƒˆ๋กœ์šด ์‹ค์Šต์„ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— sample_server๋ผ๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•˜๊ณ , npm init ๋ช…๋ น์–ด๋กœ ํ”„๋กœ์ ํŠธ ์ดˆ๊ธฐํ™”๋ฅผ ํ•œ๋‹ค.

 

์ด๋ ‡๊ฒŒ package.json ํŒŒ์ผ ์„ค์ •์„ ํ•œ๋‹ค.

 

 

๊ทธ๋ฆฌ๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ข…์† ๋ชจ๋“ˆ๋กœ http-status-codes ํŒจํ‚ค์ง€๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ์•„๋ž˜์™€ ๊ฐ™์€ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.

 

 

 

๊ทธ๋ ‡๊ฒŒ ๋๋งˆ์น˜๊ณ  ๋‚˜๋ฉด ์ด๋ ‡๊ฒŒ dependencies ๋‚ด๋ถ€์— ์ข…์†๋ชจ๋“ˆ๋กœ http-status-codes๊ฐ€ ์ƒ๊ธด ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

์ด๋ ‡๊ฒŒ!

 

 

 

๊ทธ๋ฆฌ๊ณ  ๋‚˜์„œ, ์ด์ œ ๋ณธ๊ฒฉ์ ์œผ๋กœ ์›น ๋ธŒ๋ผ์šฐ์ €์— ๋ฌด์–ธ๊ฐ€๋ฅผ ๋„์šฐ๊ธฐ ์œ„ํ•ด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด๋ดค๋‹ค.

 

 

๋จผ์ € 1ํ–‰์— const port = 3000์€ ์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์‚ฌ์šฉํ•  ํฌํŠธ ๋ฒˆํ˜ธ 3000์„ ์ง€์ •ํ•œ๋‹ค.

**3000๋ฒˆ ํฌํŠธ๋Š” ๋ณดํ†ต ์›น ์„œ๋ฒ„ ๊ฐœ๋ฐœ ์‹œ ์ž์ฃผ ์‚ฌ์šฉ๋œ๋‹ค. ์ˆซ์ž์— ํฐ ์˜๋ฏธ๋Š” ์—†์œผ๋ฉฐ, ๋‹ค๋ฅธ ์˜ˆ์™ธ ์ƒํ™ฉ ๋ฐœ์ƒ ์‹œ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•˜๋‹ค. 80ํฌํŠธ์™€ 443ํฌํŠธ๋Š” HTTP์™€ HTTPS ์šฉ๋„๋กœ ์‚ฌ์šฉ๋œ๋‹ค.

 

๊ทธ๋Ÿฐ ๋‹ค์Œ require๋ฅผ ์‚ฌ์šฉํ•ด http ๋ชจ๋“ˆ์„ ๊ฐ€์ ธ์™€ ์ƒ์ˆ˜๋กœ ์ €์žฅํ•˜๊ณ , http-status-codes๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ €์žฅํ•œ๋‹ค.

 

 

http ๋ณ€์ˆ˜๋ฅผ HTTP ๋ชจ๋“ˆ์— ๋Œ€ํ•œ ์ฐธ์กฐ๋กœ ์‚ฌ์šฉํ•˜๊ณ , ํ•ด๋‹น ๋ชจ๋“ˆ์˜ createServer ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด ์„œ๋ฒ„๋ฅผ ๋งŒ๋“ค๊ณ  ๊ฒฐ๊ณผ ์„œ๋ฒ„๋ฅผ app์ด๋ผ๋Š” ๋ณ€์ˆ˜์— ์ €์žฅํ•œ๋‹ค.

 

createServer ํ•จ์ˆ˜๋Š” ์ƒˆ๋กœ์šด http.Server ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. (createServer๋Š” HTTP ํ†ต์‹ ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๋„๊ตฌ๋“ค์ด ํฌํ•จ๋ผ ์žˆ๋Š” Node.js์˜ ๋‚ด์žฅ ํด๋ž˜์Šค์ด๋‹ค.)

 

์ƒˆ๋กœ ๋งŒ๋“ค์–ด์ง„ ์„œ๋ฒ„ ์ธ์Šคํ„ด์Šค๋กœ ์•ฑ์€ HTTP ์š”์ฒญ์„ ๋ฐ›์„ ์ค€๋น„๋ฅผ ํ•˜๊ณ  HTTP ์‘๋‹ต์„ ์ „์†กํ•œ๋‹ค.

 

createServer์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ์„œ๋ฒ„์—์„œ ์–ด๋–ค ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ๋งˆ๋‹ค ๋™์ž‘ํ•˜๋Š” ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋‹ค. 

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

 

console.log("Received an incoming request!")

๋ผ๋Š” ์ฝ”๋“œ๋กœ ์‹œ์Šคํ…œ์€ ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ์š”์ฒญ ๋ฐ›์•˜์Œ์„ ๊ธฐ๋กํ•˜๊ณ , ์ฝœ๋ฐฑ ํ•จ์ˆ˜์˜ response ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด ์ฒ˜์Œ ์š”์ฒญ์„ ๋ฐ›์€ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋‹ค์‹œ ๋‚ด์šฉ์„ ๋ณด๋‚ธ๋‹ค. 

 

writeHead ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ์‘๋‹ต์˜ HTTP ํ—ค๋”์˜ ๊ธฐ๋ณธ ์†์„ฑ์„ ์ •์˜ํ•œ๋‹ค. 

  

res.writeHead(httpStatus.OK, {
    "Content-Type": "text/html"
  }

 

์ด ๊ฒฝ์šฐ ์‹œ์Šคํ…œ์€ httpStatus.OK ์‘๋‹ต์ฝ”๋“œ 200์„ ๋Œ๋ ค์ค€๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์„œ๋ฒ„๊ฐ€ ์š”์ฒญ์„ ์„ฑ๊ณต์ ์œผ๋กœ ๋ฐ›๊ณ  HTML ํ˜•ํƒœ์˜ ์ฝ˜ํ…์ธ ๋กœ ์‘๋‹ต์„ ํ•  ๊ฒƒ์ž„์„ ์˜๋ฏธํ•œ๋‹ค. 

 

๋ฐ”๋กœ ๋‹ค์Œ ์ค„์— write๋ฅผ ์จ์„œ HTML ํ˜•์‹์˜ ์ถœ๋ ฅ๋ฌธ์œผ๋กœ ์‘๋‹ต์„ ์‹œ์ž‘ํ•˜๊ณ , end๋ฅผ ์จ์„œ ์‘๋‹ต์„ ์ข…๋ฃŒ์‹œํ‚จ๋‹ค. 

 

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

 

๋งˆ์ง€๋ง‰ ๋ผ์ธ

app.listen(port);
console.log("The server has started and is listening on port number: ", port);

์—์„œ๋Š”

 

์„œ๋ฒ„ ์ธ์Šคํ„ด์Šค์ธ app์„ ๊ฐ€์ง€๊ณ  3000๋ฒˆ ํฌํŠธ๋กœ๋ถ€ํ„ฐ ์š”์ฒญ์„ ๋ฐ›์„ ์ค€๋น„๊ฐ€ ๋๋‹ค๊ณ  ๊ฐ€๋ฆฌํ‚ค๊ธฐ ์œ„ํ•œ listen ๋ฉ”์†Œ๋“œ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.

 

 

์ด๋ ‡๊ฒŒ ์ฝ”๋“œ๋ฅผ ๋‹ค ์ž‘์„ฑํ•œ ๋’ค, ํ„ฐ๋ฏธ๋„๋กœ ๋Œ์•„๊ฐ€ main.js๋ฅผ ์‹คํ–‰์‹œํ‚ค๋ฉด console log๊ฐ€ ์ž˜ ์ถœ๋ ฅ๋˜๊ณ , 

 

localhost:3000์œผ๋กœ ์ ‘์†ํ•ด๋ณด๋ฉด,

 

์‘๋‹ต ํ™”๋ฉด๋„ ์ž˜ ์ถœ๋ ฅ๋œ๋‹ค. 

 

 

 

 

 

 

 

LIST

๋Œ“๊ธ€