ยซ   2025/06   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Archives
Today
Total
๊ด€๋ฆฌ ๋ฉ”๋‰ด

Multi Developer SuHo

Node js ๋ผ์šฐํ„ฐ(Router)๋ž€? ๋ณธ๋ฌธ

Node.js ๊ธฐ๋ก

Node js ๋ผ์šฐํ„ฐ(Router)๋ž€?

Dreaming Developer Student 2025. 3. 7. 16:58
SMALL
๐Ÿ“‘๋ชฉ์ฐจ
1. ๋ผ์šฐํ„ฐ(Router)
1-1. ๋ผ์šฐํ„ฐ๋ž€?
1-2. ๋ผ์šฐํ„ฐ๋ฅผ ์™œ ์‚ฌ์šฉํ• ๊นŒ?
1-3. app ๋ผ์šฐํŒ… vs express.Router ๋ผ์šฐํŒ…

 

์„œ๋ก 

๋จผ์ € ์ด ํฌ์ŠคํŒ…์„ ์ฝ๊ธฐ ์ „, ๋ผ์šฐํ„ฐ์— ๋Œ€ํ•ด ๋“ค์–ด๋ณด์‹ ์  ์žˆ์œผ์‹ ๊ฐ€์š”?  OSI ๊ณ„์ธต์—์„œ 3๊ณ„์ธต์ธ ๋„คํŠธ์›Œํฌ ๊ณ„์ธต์—์„œ ํ†ต์‹  ์žฅ๋น„ "๋ผ์šฐํ„ฐ" ๋ผ๊ณ  ๋“ค์–ด๋ณด์…ง๋‚˜์š”?  ํ•˜์ง€๋งŒ ๋„คํŠธ์›Œํฌ์—์„œ "๋ผ์šฐํ„ฐ" ๋ž‘ ์†Œํ”„ํŠธ์›จ์–ด์—์„œ "๋ผ์šฐํ„ฐ"๋Š” ๋‹ค๋ฅธ ๊ฐœ๋…์ด๋‹ˆ ์ด๋ฆ„์ด ๊ฐ™๋‹ค๊ณ  ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ๋™์ž‘ํ•œ๋‹ค๊ณ  ๋ณด์‹œ๋ฉด ์•ˆ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ ์™œ  Node js ์—์„œ "๋ผ์šฐํ„ฐ" ๋ฅผ ์•Œ์•„์•ผํ•˜๋Š”์ง€ ์•Œ์•„๋ณด๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์ ธ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. 

 

 

 

๋ณธ๋ก 

1. ๋ผ์šฐํ„ฐ(Router)

 

1-1. ๋ผ์šฐํ„ฐ(Router)๋ž€? 

ํŠน์ • HTTP ์š”์ฒญ(URL ๊ฒฝ๋กœ์™€ HTTP ๋ฉ”์„œ๋“œ)์— ๋”ฐ๋ผ ์š”์ฒญ์„ ์ ์ ˆํ•œ ํ•ธ๋“ค๋Ÿฌ ํ•จ์ˆ˜๋กœ ์ „๋‹ฌํ•˜๋Š” ์—ญํ• 

 

 

1-2. ๋ผ์šฐํ„ฐ๋ฅผ ์™œ ์‚ฌ์šฉํ• ๊นŒ?

 

์›น ์‚ฌ์ดํŠธ์—์„œ๋Š” ๊ฐ๊ฐ ๋‹ค๋ฅธ ๊ฒฝ๋กœ์—์„œ ๋‹ค๋ฅธ ํ™”๋ฉด ๋˜๋Š” ๊ธฐ๋Šฅ์„ ๋ณด์—ฌ์ค˜์•ผ ํ•  ๋•Œ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ๋ผ์šฐํŒ…์„ ๋ถ„ํ• ํ•˜์—ฌ ์ฒ˜๋ฆฌํ•˜๋ฉด ์œ ์ง€๋ณด์ˆ˜๋„ ์‰ฌ์›Œ์ง€๊ณ  ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์„ ๋†’์—ฌ์ฃผ๋Š” ํŠน์ง•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„์˜ ํ•ต์‹ฌ ๋กœ์ง์„ ๋‹ด๋‹นํ•˜๋Š” app.js ๊ฐ™์€ ์ฝ”๋“œ์—์„œ ํ•˜๋‚˜์˜ ๋ผ์šฐํŒ… ์ฒ˜๋ฆฌ๊ฐ€ ์•„๋‹Œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ผ์šฐํŒ… ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๊ฒŒ ๋˜๋ฉด ์ฝ”๋“œ๊ฐ€ ๊ธธ์–ด์งˆ ์ˆ˜ ๋ฐ–์— ์—†๊ณ  ์œ ์ง€ ๋ณด์ˆ˜์™€ ์ฝ”๋“œ๊ฐ€ ๊ฐ„๊ฒฐํ•˜์ง€ ์•Š์•„์„œ ๋ถˆํŽธ์„ ๊ฒช๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•ด Express ๋‚ด๋ถ€์—์„œ ๋ผ์šฐํŒ… ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ฃผ๋Š” ๋ผ์šฐํ„ฐ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ด์ค๋‹ˆ๋‹ค.

 

 

1-3. app ๋ผ์šฐํŒ… VS Express.Router( ) ๋ผ์šฐํŒ…

 

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

const express = require('express');

const app = express();


app.get('/', (req, res) => {
    res.send("๋‚˜๋Š” ๋ฉ”์ธ")
})

app.get('/test', (req, res) => {
    res.send('์—ฌ๊ธฐ๋Š” test')
})

app.post('/', (req, res) => {
    res.send("์—ฌ๊ธฐ๋Š” post ์š”์ฒญ")
})


app.listen(3000, () => {
    console.log('์„œ๋ฒ„ ์ž‘๋™์ค‘~~')
})


์ด๋ ‡๊ฒŒ ๊ฐ๊ฐ ์š”์ฒญ ๋ฉ”์„œ๋“œ์— ๋”ฐ๋ผ ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ด ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด ๋‹ค๋ฅธ ๊ฒฝ๋กœ์— ํ•ด๋‹นํ•˜๋Š” ํŽ˜์ด์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด ์ฝ”๋“œ๋ฅผ ๋” ์ถ”๊ฐ€ํ•ด์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ฐ˜๋ณต๋ฉ๋‹ˆ๋‹ค.  ๋งŒ์•ฝ ํŽ˜์ด์ง€๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ๊ณ , ๊ฐ๊ฐ์˜ ๊ฒฝ๋กœ๊ฐ€ ๋‹ค๋ฅด๋‹ค๋ฉด ์ฝ”๋“œ๊ฐ€ ๊ธธ์–ด์งˆ ์ˆ˜ ๋ฐ–์— ์—†๊ฒ ์ฃ  ? 

๊ทธ๋Ÿผ ์ด๋Ÿฐ ๋ฐฉ์‹์„ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด Express ์—์„œ ๋ผ์šฐํ„ฐ ์ฒ˜๋ฆฌ๋ฅผ ์ œ๊ณตํ•ด์ฃผ๋Š” Express.Router( ) ๋ฅผ ์‚ฌ์šฉํ•œ ์ฝ”๋“œ๋ฅผ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. 


router.js ์ฝ”๋“œ 
ํ˜„์žฌ ์ด ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด express ๋‚ด๋ถ€์—์„œ ๋ผ์šฐํŒ… ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ด์ฃผ๋Š”  Router() ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ , Get ์š”์ฒญ์œผ๋กœ ๊ฐ ๊ฒฝ๋กœ์— ํ•ด๋‹นํ•˜๋Š” ejs ํŒŒ์ผ์„ ํ™”๋ฉด์— ๋ Œ๋”๋ง ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ƒ์„ฑํ•œ ๋ผ์šฐํ„ฐ ๊ฐ์ฒด๋ฅผ ๋ชจ๋“ˆ๋กœ ๋‚ด๋ณด๋‚ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. 

const router = require('express').Router();
console.log(router);

router.get('/', (req, res) => {
    res.render('main')
})

router.get('/next', (req, res) => {
    res.render('next')
})

router.get('/test', (req, res) => {
    res.render('test');
})

module.exports = router;

 


๋‚ด๋ณด๋‚ธ  ๋ชจ๋“ˆ์„ app.js ์—์„œ Exprees ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋“ฑ๋กํ•˜๊ณ ,  ๋ฏธ๋“ค์›จ์–ด๋กœ ์ถ”๊ฐ€ํ•˜์—ฌ ์ˆ˜์ •ํ•œ ์ฝ”๋“œ

// Express ๋ชจ๋“ˆ ๊ฐ€์ ธ์˜ค๊ธฐ
const express = require('express');

// ๋ผ์šฐํ„ฐ ๋ชจ๋“ˆ์„ ๋ถˆ๋Ÿฌ์™€์„œ Express ์•ฑ๊ณผ ์—ฐ๊ฒฐ
const router = require('../RouterTest/router/router');

// Express ์„œ๋ฒ„ ๊ฐ์ฒด ์ƒ์„ฑ
const app = express();

// ํ…œํ”Œ๋ฆฟ ์—”์ง„์„ EJS๋กœ ์„ค์ •
app.set('view engine', 'ejs');

// ๋ถˆ๋Ÿฌ์˜จ ๋ผ์šฐํ„ฐ๋ฅผ ๋ฏธ๋“ค์›จ์–ด๋กœ ๋“ฑ๋ก (๋ผ์šฐํ„ฐ์—์„œ ์„ค์ •ํ•œ ๊ฒฝ๋กœ๋“ค์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค)
app.use('/', router);

// ์š”์ฒญ ๋ณธ๋ฌธ(body)์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ•ด์„ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •
app.use(express.urlencoded({ extended: false }));

// app.get('/', (req, res) => {
//     res.send("๋‚˜๋Š” ๋ฉ”์ธ")
// });


// app.get('/test', (req, res) => {
//     res.send('์—ฌ๊ธฐ๋Š” test')
// });


// app.post('/', (req, res) => {
//     res.send("์—ฌ๊ธฐ๋Š” post ์š”์ฒญ")
// });

// 
app.listen(3000, () => {
    console.log('์„œ๋ฒ„ ์ž‘๋™์ค‘~~');
});



 

๊ฒฐ๋ก 

๊ธฐ์กด์— ์ฃผ์„ ์ฒ˜๋ฆฌํ•œ ๋ถ€๋ถ„์ด app.js ์—์„œ ๋ชจ๋“  ๋ผ์šฐํ„ฐ ๊ธฐ๋Šฅ์„ ์ฒ˜๋ฆฌํ•˜์˜€์ง€๋งŒ, Express ๋‚ด๋ถ€์—์„œ ์ œ๊ณตํ•ด์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ธ  router ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๋ชจ๋“ˆ๋กœ ๋‚ด๋ณด๋‚ด์„œ app.js ์— ๋“ฑ๋กํ•˜์—ฌ ๊ฐ๊ฐ ๋ถ„ํ• ํ•˜์—ฌ ๋ผ์šฐํ„ฐ ์ฒ˜๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์‰ฝ๊ณ  ๋ผ์šฐํ„ฐ ์ฒ˜๋ฆฌ๋ฅผ ๊ฐ๊ฐ ๋ถ„ํ• ํ•˜์—ฌ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. 

 

LIST