Node.js ๋ฅผ ์ํ ๋น ๋ฅด๊ณ ๊ฐ๊ฒฐํ ์น ํ๋ ์์ํฌ
Node.js ๋ฅผ ์ ํ๊ฒ๋๋ฉด์ ์์ฐ์ค๋ฝ๊ฒ ์นํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ๊ฒ๋ฌ๋ค. express, koa, hapi ์ ๊ฐ์ ์น ํ๋ ์์ํฌ๊ฐ ์กด์ฌํ์ง๋ง, ๊ทธ ์ค ๊ฐ์ฅ ์ธ๊ธฐ๊ฐ ๋ง์ 'express๋ฅผ ์ฌ์ฉํ๊ธฐ๋กํ๋ค.' ์น ํ๋ ์์ํฌ๋ Node.js ๊ฐ๋ฐ ์ ์ ์ฒด์ ์ธ ์์ ์ ์์ฝ๊ณ ๋น ๋ฅด๊ฒ ํ ์ ์๋๋ก ๋์์ฃผ๋ ์ญํ ์ ํ๋ค.
Express ๋ ๊ฐ์ข ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๊ธฐ ์ํด ๋ฏธ๋ค์จ์ด(middleware)๋ฅผ ์ฌ์ฉํ๋ค. ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ก ์์ฑ๋ ๋ค์ํ ๊ธฐ๋ฅ์ ๋ฏธ๋ค์จ์ด๋ ๊ฐ๋ฐ์ ์ ํ์ํ ๊ฒ๋ง ์ ํํ์ฌ Express ์ ๊ฒฐํฉํด ์ฌ์ฉํ ์ ์๋ค. ๋ฏธ๋ค์จ์ด์ ๋ํด์๋ ๋์ค์ ์์ธํ ๋ค๋ค๋ณด๋๋ก ํ๊ฒ ๋ค.
// npm
npm install express --save
// yarn
yarn add express
npm์ด๋ yarn์ผ๋ก ์์ฝ๊ฒ ์ค์น๊ฐ ๊ฐ๋ฅํ๋ค.
const express = require('express');//express ๋ชจ๋ ๊ฐ์ ธ์ค๊ธฐ.
const app = express();//Express ๊ฐ์ฒด ์์ฑ
const port = 3000;//๋ณ์ 'port' ์ ์ธ
//route
app.get('/',(req,res) => {
res.send("Hello Express!");
});
app.get('/profile', (req, res) => { // URL + Callback
res.send("Profile page");
});
//port
app.listen(port,()=>{
console.log("Express server on port 3000!");
});/*์์์ ์ ์ธํ port๋ณ์ , ๊ทธ๋ฆฌ๊ณ ์์ฒญ๋๊ธฐ ์๋ฃ ์ ์คํ ๋ ์ฝ๋ฐฑํจ์ ์ง์ -> (()=>{
console.log("Express server on port 3000!");*/
๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ํํ์ ๊ฐ๋จํ ์๋ฒ๋ฅผ ๋ง๋ค์ด ๋ณด์๋ค. ์ค๊ฐ์ 'get'์ด๋ผ๋ ๋ฉ์๋๋ฅผ ํตํด 'localhost:3000/'์ฆ, ๊ธฐ๋ณธ ํ์ด์ง์ธ root ํ์ด์ง์ 'localhost:3000/profile'์ด๋ ์์์ ํ์ด์ง๋ฅผ ๋ง๋ค์ด์คฌ๋ค.
HTTP๋ฅผ ํตํ ์์ฒญ ๋ฐฉ์์๋ ์ฃผ๋ก 'get', 'post'๋ฅผ ์ฌ์ฉํ๋ค. ์ฌ์ค ๊ทธ ๋ฐ์๋ head, put, delete, trace, options, connect ๋ฑ ๋ค์ํ ๋ฉ์๋๊ฐ ์กด์ฌํ์ง๋ง ๋ณดํต Rest api๋ฅผ ์ํด POST, GET, PUT ,DELETE ๋ฉ์๋๋ง ์ฌ์ฉํด๋ ์ถฉ๋ถํ๋ค๊ณ ํ๋ค.
๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ request ๋ฉ์๋์ธ get, post์ ๋ํด์ ๋ํ
์ผํ ์ ๋ฆฌํ์ ๋ฐ๋ก ๊ธ์ ์
๋ก๋ํ ์์ ์ด๋ฉฐ, Node JS๋ฅผ ์์๊ฐ๋ ๊ธด ์ฌ์ ์ ํฐ ๋์์ ์ค ์ ์๋ 'Nodemon'์ด๋ผ๋ ์ ์ฉํ ํด์ ์๊ฐํด๋ณผ๊น ํ๋ค.
Node.js ๊ฐ๋ฐ ์ ์๋ฐ ์คํฌ๋ฆฝํธ ํ์ผ๋ค์ ์์ ํ ๋๋ง๋ค ๋งค๋ฒ ctrl+c๋ฅผ ํตํด node๋ฅผ ์ข ๋ฃ ํ ๋ค์ ์คํํด์ค์ผ ํ๋ ๋ฒ๊ฑฐ๋ก์ ์ด ์์๋ค.
ํ์ง๋ง ํ์ผ๋ค์ ๋ชจ๋ํฐ๋งํ๊ณ ์๋ค๊ฐ ์์ ๋ ๊ฒฝ์ฐ ์๋์ผ๋ก ์๋ฒ๋ฅผ ์ฌ์คํ์์ผ์ฃผ๋ ์คํฌ๋ฆฝํธ ๋ชจ๋ํฐ๋ง ์ ํธ๋ฆฌํฐ nodemon๋ฅผ ์ด์ฉํ๋ฉด ๋ฒ๊ฑฐ๋ก์์ด ์๋นํ ์ค์ด๋ ๋ค!
// npm
npm install nodemon -g
์ปค๋งจ๋๋ผ์ธ์์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ ๊ฒ์ด๊ธฐ์ ์ ์ญ ์ค์น๋ฅผ ํด์ฃผ๋๋ก ํ์
๊ธฐ์กด ๋ฐฉ์์ด node ~.js ์๋ค๋ฉด nodemon ~.js ๋ก ์ ๋ ฅํด์ฃผ๋ฉด ๋๋ค. ๊ทธํ main.js๋ฅผ ์์ ํ๊ณ ์ ์ฅํด๋ nodemon์ด ์๋์ผ๋ก ์๋ฒ๋ฅผ ์ฌ์คํ ์์ผ์ฃผ๋๊ฒ์ ์์์๋ค.
์ฌ๋ด์ผ๋ก package.json์ "script"์ nodemon main.js๋ฅผ ์ถ๊ฐํด์คฌ๋ค. ์ด์ npm start๋ฅผ ํตํด
์ข๋ ํธ๋ฆฌํ node ~.js ๊ฐ๋ฐ์ด ๊ฐ๋ฅํด์ก๋ค.๐