์์ ์ ๊ณต
์ ํ๋ฆฌ์ผ์ด์ ์์์ ์์ ์ด๋ ์ด๋ฏธ์ง, ์คํ์ผ ์ํธ, JavaScript ํ์ผ์ ๋ปํ๋ฉฐ
ํด๋ผ์ด์ธํธ ์ธก์์ ๋ทฐ ํ์ด์ง์ ํจ๊ป ๋์ํ๋ค.
HTML ํ์ผ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์ ํ๋ฆฌ์ผ์ด์ ๋ด์์ ํ์ผ ํ์ , ์๋ฅผ ๋ค์ด .jpg, css๋ ๊ฐ์ ๊ณ ์ ์ ๋ผ์ฐํธ๊ฐ ํ์ํ๋ค.
์ด๊ฒ์ ์ํด ํ๋ก์ ํธ ๋ฃจํธ ๋๋ ํฐ๋ฆฌ์ public ํด๋๋ฅผ ๋ง๋ค๊ณ ํ์์ image, css, js ํด๋๋ฅผ ๋ง๋ค์ด ์์ ๋ค์ ๋ถ๋ฆฌํ๋ค. ๊ทธ๋ ๊ฒ ํ๋ฉด ํ์ผ ๊ตฌ์กฐ๋
์ด๋ ๊ฒ ๋ ๊ฒ์ด๋ค.
์ด์ main.js๋ฅผ ๋ณผ ์ฐจ๋ก.
์ ์ฒด ๋ก์ง์ ํ์ผ์ ์ฝ์ด๋ค์ด๋ ํจ์๋ฅผ ๊ตฌํํด๋๊ณ if ๊ตฌ๋ฌธ์ผ๋ก ์ง์ ๋ ํ์ผ ์์ฒญ ์ ํ์ ๋ง๊ฒ ๋ถ๋ฌ๋ค์ด๋ ๊ฒ ๋ฟ์ด๋ค.
๋จผ์ ์ด๋ ๊ฒ ์๋ฌ ํธ๋ค๋ง ํจ์๋ฅผ ์์ฑํ๋ค.
๊ทธ๋ฆฌ๊ณ ์์ฒญ์ ๋ฐ์ผ๋ฉด ์์ฒญ URL์ ๋ณ์ url์ ์ ์ฅํ๋ค.
๊ฐ if๋ฌธ ์กฐ๊ฑด์ ๋ง์ถฐ ํ์ผ ํ์ฅ์๋ฑ url์ ์ฒดํฌํ๋ค.
customReadFile์ด๋ผ๋ ํจ์๋ฅผ ์ ์ํด์ ์์ฒญ๋ ์ด๋ฆ์ผ๋ก ํ์ผ์ ์ฐพ๊ณ
ํด๋น ํ์ผ์ ๋ฐ์ดํฐ๋ก ์๋ต์ ์์ฑํ๋ฉฐ ๋ชจ๋ ๋ฉ์์ง๋ฅผ ์ฝ์์ ๊ธฐ๋กํ๋๋ก ํ๋ค.
์ด ํจ์๋ fs.readFile์ ์ฌ์ฉํด ์์ฒญ๋ ์ด๋ฆ์ผ๋ก ํ์ผ์ ์ฐพ๋๋ค.
์ด๋ ๊ฒ ํ๋ฉด ๊ฒฐ๊ณผ๋ ์๊น์ ๊ฐ์ด ์ ์ถ๋ ฅ๋๋ค.
๋ผ์ฐํธ๋ฅผ ๋ค๋ฅธ ํ์ผ๋ก ๋ฐ๊ฟ ์ฐ๊ฒฐํ๊ธฐ
๋ง์ผ ๋ชจ๋ ๋ผ์ฐํธ๋ฅผ ์์์ ์ฒ๋ผ if-else ๊ตฌ๋ถ์ผ๋ก ๊ตฌ๋ถํด ์ฒ๋ฆฌํ๋ค๋ฉด ๋ผ์ฐํธ๋ฅผ ๋ณ๊ฒฝํ๊ฑฐ๋ ์ญ์ ํ ๋ ๋ฒ๊ฑฐ๋ก์์ด ์ปค์ง ๊ฒ์ด๋ค.
์ด๋ฐ ๋ฌธ์ ๋ฅผ ์ํํ๊ธฐ ์ํด ๋ผ์ฐํธ ๋ถ๋ถ์ router.js ๋ผ๋ ์๋ก์ด ํ์ผ๋ก ๋ถ๋ฆฌํ๋ค.
์ฌ๊ธฐ์ POST์ GET์์ฒญ์ ๋งคํ๋๋ ๋ผ์ฐํธ๋ฅผ ์ ์ฅํ๊ธฐ ์ํ routes ๊ฐ์ฒด๋ฅผ ์ ์ํ๋ค.
์ฌ๊ธฐ์ ๋ผ์ฐํธ์ ์ฝ๋ฐฑํจ์๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํ handle ํจ์๋ ์์ฑํ๋ค.
์ด ํจ์๋ routes[req.method]๋ฅผ ์ฌ์ฉํด ์์ฒญ HTTP ๋ฉ์๋์ ๋ฐ๋ผ route ๊ฐ์ฒด์ ์ก์ธ์คํ๋ฉฐ
์ดํ ๊ด๋ จ๋ ์ฝ๋ฐฑ ํจ์๋ฅผ [req.url]์ ์ฌ์ฉํด ์์ฒญ์ ํ๊น URL์ ํตํด ์ฐพ๋๋ค.
์๋ฅผ ๋ค์ด, /index.html ๋ผ์ฐํธ๋ฅผ ํตํด GET ์์ฒญ์ ๋ง๋ค์๋ค๋ฉด route["GET"]["index.html"]์ route ๊ฐ์ฒด์์ ์ฌ์ ์ ์๋ ์ฝ๋ฐฑ ํจ์๋ฅผ ๋๋ ค์ค ๊ฒ์ด๋ค. ๋ง์ง๋ง์ผ๋ก routes ๊ฐ์ฒด์ ์๋ ์ฝ๋ฐฑํจ์๊ฐ ํธ์ถ๋๊ณ ์์ฒญ๊ณผ ์๋ต์ด ์ ๋ฌ๋๋ฏ๋ก ํด๋ผ์ด์ธํธ์ ์ ์ ํ๊ฒ ์๋ตํ ์ ์๊ฒ ๋๋ค.
๋ผ์ฐํธ๊ฐ ์์ผ๋ฉด httpStatus.NOT_FOUND๋ฅผ ๋๋ ค์ค๋ค.
(๋ผ๊ณ ํ๋๋ฐ ๋ญ ์๋ฆฐ์ง ์ ํํ ๋ชจ๋ฅด๊ฒ ๋คใ
)
handle ํจ์๋ ๋ฐ์ ์์ฒญ์ด HTTP ๋ฉ์๋์ URL์ ํตํด routes ๊ฐ์ฒด์ ๋ผ์ฐํธ์ ์ผ์นํ๋์ง ํ์ธํ๊ณ
์ผ์นํ์ง ์์ผ๋ฉด ์ค๋ฅ๋ฅผ ๋ก๊น ํ๋ค.
try-catch ๋ฅผ ์ฌ์ฉํด ๋ค์ด์ค๋ ์์ฒญ์ ๋ผ์ฐํ ํ๊ณ , ์๋ชป๋ ๋ผ์ฐํ ์ผ๋ก ๋ฐ์ํ ์ ์์ ์ ํ๋ฆฌ์ผ์ด์ ์๋ฌ๋ฅผ ์ฒ๋ฆฌํ๋ค.
์๋ฌดํผ ์ด๊ฒ์ require("./router")๋ฅผ ์ฌ์ฉํด์ main.js์ ์ถ๊ฐํ๊ณ , ๋ผ์ฐํธ๊ฐ main.js์์ ์์ฑ๋๋ฉด ๋ฉ์๋ ํ์ (GET/POST)์ ๋ฐ๋ผ routes ๊ฐ์ฒด์ ์ถ๊ฐ๋๋ค.
๊ฒฐ๊ณผ๋ ์ด๋ ๊ฒ ์ ๋์จ๋ค.
'โ๏ธ 21-2 IPP > Node.js study' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Node.js - 10 Express.js (0) | 2021.10.21 |
---|---|
Node.js - 9 ์บก์คํค ํ๋ก์ ํธ: ์ฒซ๋ฒ์งธ ์น (0) | 2021.10.21 |
Node.js - 7 ๋ผ์ฐํธ(2) (0) | 2021.10.15 |
Node.js - 6 ๋ผ์ฐํธ(1) (0) | 2021.10.15 |
Node.js - 5 GET, POST ์์ฒญ (0) | 2021.10.14 |
๋๊ธ