# Node.js Express router ์ฌ์ฉํ๊ธฐ
์ค์ ์ฌ์ดํธ๋ฅผ ๊ฐ๋ฐํ ๋ app.get()
, app.post()
์ ๊ฐ์ ์ฝ๋๊ฐ ์์ญ, ์๋ฐฑ๊ฐ๊ฐ ๋ ์ ์๋ค. ์ด๋ฐ ๋ผ์ฐํธ ์ฝ๋๋ค์ ๋ค๋ฅธ ํ์ผ์์ ๊ด๋ฆฌํด ๋ณต์กํ๋ ์ฝ๋๋ฅผ ๊น๋ํ๊ฒ ์ฌ์ฉํ ์ ์๋๋ฐ, express๋ฅผ ์ฌ์ฉํ๋ ์ด์ ์ค ํ๋๊ฐ ๋ฐ๋ก ๋ผ์ฐํ
์ ๊น๋ํ๊ฒ ๊ด๋ฆฌํ ์ ์๋ค๋ ๊ฒ์ด๋ค.
# router ๊ฐ์ฒด๋ก ๋ผ์ฐํ ๋ถ๋ฆฌ
์ผ๋ฐ์ ์ผ๋ก router ํ์ผ๋ค์ /routes
๋๋ ํ ๋ฆฌ์์ ๊ด๋ฆฌํ๋ค.
ํด๋น ์์ ์์๋ ์ ์ฒด ์๋ฒ๋ฅผ ๊ด๋ฆฌํ๋ /server.js
ํ์ผ๊ณผ shop ์ ๊ด๋ จ๋ router๋ฅผ ๊ด๋ฆฌํ๋ /routes/shop.js
ํ์ผ๋ก ๋ถ๋ฆฌํ์ฌ ๊ด๋ฆฌํ๋ค.
/routes/user.js
const router = require('express').Router();
router.get('/shop/shirts', (req, res) => {
res.send('์
์ธ ๋ฅผ ํ๋ ํ์ด์ง์
๋๋ค.')
});
router.get('/shop/pants', (req, res) => {
res.send('๋ฐ์ง๋ฅผ ํ๋ ํ์ด์ง์
๋๋ค.')
});
module.exports = router;
2
3
4
5
6
7
8
9
10
11
12
13
/server.js
app.use('/', require('./routes/shop.js'));
2
3
router ๊ฐ์ฒด๋ require('express').Router()
๋ก ๋ง๋ค์๋ค.
๋ถ๋ฆฌ ์ ๊ธฐ์กด ์ฝ๋์์๋ app.get()
/ app.post()
์ ๊ฐ์ด ์์ฑํ๋ค๋ฉด ๋ถ๋ฆฌ๋ ํ์ผ์์๋ router ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํด ์์ฑํ๋ค.
router์์๋ app ๊ณผ ๊ฐ์ด use, get, post, put, patch, delete ์ ๊ฐ์ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ ์๋ค. ๋ํ ๋ฏธ๋ค์จ์ด ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค. (๋ฏธ๋ค์จ์ด๋ฅผ ์ ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ค์ ์์ ์์ ์ค๋ช )
์ฒ์์ require ๋ฌธ์ ํตํด Router ์ฌ์ฉ์ ์๋ ธ๋ค๋ฉด,
๋ง์ง๋ง์๋ module.exports = router
๋ก ๋ผ์ฐํฐ ๋ชจ๋์ ๋ง๋ค์ด ๋ค๋ฅธ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์์๋ router ๋ณ์ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋๋ก ํ๋ค.
๊ทธ๋ฆฌ๊ณ server.js ์์ app.use๋ก ํด๋น ๋ผ์ฐํฐ๋ฅผ ์ฐ๊ฒฐํด ํจ์ฌ ๊น๋ํ๊ฒ ๊ด๋ฆฌํ๋ค.
# ๋ ๊น๋ํ๊ฒ ์์ฑํ๊ธฐ
/routes/shop.js
const router = require('express').Router();
router.get('/shirts', (req, res) => {
res.send('์
์ธ ๋ฅผ ํ๋ ํ์ด์ง์
๋๋ค.')
});
router.get('/pants', (req, res) => {
res.send('๋ฐ์ง๋ฅผ ํ๋ ํ์ด์ง์
๋๋ค.')
});
module.exports = router;
2
3
4
5
6
7
8
9
10
11
12
13
/server.js
app.use('/shop', require('./routes/shop.js'));
2
3
๊ณตํต๋ ๊ฒฝ๋ก๋ฅผ ๋ฐ๋ณต์ ์ผ๋ก ์์ฑํ์ง ์๊ณ server.js ์์ ๊ฒฝ๋ก๋ฅผ /shop
์ผ๋ก ์์ฑํ๋ฉด ์ด๋ /shop/shirts
, /shop/pants
๋ก ์ฐ๊ฒฐ๋๋ค. ์ด๋ ๊ฒ ์์ฑํ๋ฉด ์ด๋์ ํด๋นํ๋ ๋ผ์ฐํฐ์ธ์ง ์ฝ๊ฒ ์ ์ ์๋ ์ง๊ด์ ์ธ ์ฝ๋๊ฐ ๋๋ค.
# router์ ๋ฏธ๋ค์จ์ด ์ ์ฉํ๊ธฐ
/routes/shop.js
const router = require('express').Router();
// ๋ฏธ๋ค์จ์ด ์์ฑ
function middleWare() {
...
}
router.get('/shirts', middleWare, (req, res) => {
res.send('์
์ธ ๋ฅผ ํ๋ ํ์ด์ง์
๋๋ค.');
});
router.get('/pants', middleWare, (req, res) => {
res.send('๋ฐ์ง๋ฅผ ํ๋ ํ์ด์ง์
๋๋ค.');
});
module.exports = router;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
app ์์ ์ฌ์ฉํ๋ฏ ๊ฒฝ๋ก์ ์ฝ๋ฐฑํจ์ ์ฌ์ด์ ๋ฏธ๋ค์จ์ด๋ฅผ ์ ๋ฌํ ์ ์๋ค. ๋ฏธ๋ค์จ์ด๊ฐ ๋จผ์ ์คํ๋ ํ ์ฝ๋ฐฑํจ์๊ฐ ์คํ๋๋ค. ํด๋น ํ์ด์ง์ ์ ์ํ๊ธฐ ์ํด ๋ก๊ทธ์ธ ์ฌ๋ถ๋ฅผ ๊ฒ์ฌํ๋ ๋ฏธ๋ค์จ์ด๋ฅผ ๋ฃ์์๋ ์์ ๊ฒ์ด๋ค.
# ๊ทธ๋ฐ๋ฐ ๋ชจ๋ ๋ผ์ฐํฐ์์ ์ฌ์ฉํ๊ณ ์ถ๋ค๋ฉด?
/routes/shop.js
const router = require('express').Router();
// ๋ฏธ๋ค์จ์ด ์์ฑ
function middleWare() {
...
}
router.use(middleWare);
router.get('/shirts', (req, res) => {
res.send('์
์ธ ๋ฅผ ํ๋ ํ์ด์ง์
๋๋ค.');
});
router.get('/pants', (req, res) => {
res.send('๋ฐ์ง๋ฅผ ํ๋ ํ์ด์ง์
๋๋ค.');
});
module.exports = router;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
์ ๋ง ๊ฐ๋จํ๊ฒ router.use
๋ฅผ ์ฌ์ฉํด ํด๋น ํ์ผ ๋ด ์ ์ญ ๋ฏธ๋ค์จ์ด๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.
# ํน์ ๋ผ์ฐํฐ์๋ง ์ฌ์ฉํ๊ณ ์ถ๋ค๋ฉด?
๋๋ ์ด์ ๊ฐ์ด ์์ฑํ๋ฉด ํน์ url ์๋ง ์ ์ฉํ๋ ๋ฏธ๋ค์จ์ด๋ก ์ฌ์ฉํ ์ ์๋ค. ์๋ ์ฝ๋๋ /shirts
๊ฒฝ๋ก์๋ง ์ ์ฉ๋ ์ฝ๋์ด๋ค.
router.use('/shirts', middleWare);