Node.js๋ฅผ ์ค์นํ ๋ ํต์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๊ฐ์ด ์ค์น๋๋ค.
Node.js์ ๋ชจ๋์ ์ ํ๋ฆฌ์ผ์ด์ ์ ํน์ ๊ธฐ๋ฅ์ ์ ๊ณตํ ์ฝ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค.
ํต์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค ์ค, http๋ผ๋ ๋ชจ๋์ด ์๋๋ฐ, ์ด ๋ชจ๋๋ก ์น ์๋ฒ ๊ตฌ์ถ์ด ๊ฐ๋ฅํ๋ค.
http ๋ชจ๋์ HTTP๋ฅผ ์ฌ์ฉํด ์น๊ณผ ์ปค๋ฎค๋์ผ์ด์ ํ๋๋ก ๋์์ค๋ค.
http ๋ชจ๋์ http-status-codes ํจํค์ง๋ฅผ ์ฌ์ฉํด ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋ต์์ HTTP ์ํ ์ฝ๋๊ฐ ํ์ํ ๊ณณ์ ์ฌ์ฉํ ์์๋ฅผ ์ ๊ณตํ๋ค.
๋จผ์ ์๋ก์ด ์ค์ต์ ์์ํ๊ธฐ ์ ์ sample_server๋ผ๋ ๋๋ ํฐ๋ฆฌ๋ฅผ ์์ฑํ๊ณ , npm init ๋ช ๋ น์ด๋ก ํ๋ก์ ํธ ์ด๊ธฐํ๋ฅผ ํ๋ค.
๊ทธ๋ฆฌ๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ข ์ ๋ชจ๋๋ก 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์ผ๋ก ์ ์ํด๋ณด๋ฉด,
์๋ต ํ๋ฉด๋ ์ ์ถ๋ ฅ๋๋ค.
'โ๏ธ 21-2 IPP > Node.js study' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Node.js - 6 ๋ผ์ฐํธ(1) (0) | 2021.10.15 |
---|---|
Node.js - 5 GET, POST ์์ฒญ (0) | 2021.10.14 |
Node.js - 3 ๋ณด๊ฐ๋ฉ์์ง, npm, exports๋ฑ (0) | 2021.10.13 |
Node.js - 2 ์ค์ , ๊ฐ๋จํ ์ค์ต (0) | 2021.10.12 |
Node.js - 1 ์์ํ๊ธฐ (0) | 2021.10.12 |
๋๊ธ