app.js 가 길어지는 것을 막을 수 있음
기존의 app.get('/about), app.post('/')... 이 모든 것을 app.js 하나에다가 모든 코드를 넣기에는 app.js 가 너무 길어져서 유지보수 측면에서 힘들 수가 있다.
때문에 router부분, 즉 GET, POST 메서드를 쓰는 것을 routes 폴더로 따로 뺀 후 app.js에서 호출만 해서 쓴다.
// routes/user.js
const express = require('express');
const router = express.Router();
// GET /user 라우터
router.get('/', (req, res) => {
res.send('Hello, User');
});
module.exports = router;
// app.js
const userRouter = require('./routes/user');
app.use('/user', userRouter);
이렇게 파일을 두 개로 분리해서 app.js 에 너무 코드가 길어지지 않게 한다. 이러한 경우 app.use의 경로와 user의 경로가 합쳐지게 되어서
app.use의 /user + user라우터의 / 가 합쳐져서 = GET /user/ 이 URL이 되게 된다.
:id 를 넣으면 req.params.id로 받을 수 있음
const express = require('express');
const router = express.Router();
// GET /user 라우터
router.get('/:id', (req, res) => {
res.send(`Hello, User ${req.params.id}`);
});
module.exports = router;
위와 같은 경우 req.params 에 매개변수 id가 들어오게 되어 req.params.id 하면 출력이 된다.
req.query로 쿼리스트링을 받을 수 있음
/users/123?limit=5&skip=10 주소 요청인 경우

router.get('/', (req, res) => {
res.send('Hello, Express');
});
router.post('/', (req, res) => {
res.send('post hello')
})
위 처럼 주소는 같지만 안의 메서드가 get, post로 다를 시 router.route로 묶어준다
router.route('/')
.get((req, res) => {
res.send('GET Hello, express');
})
.post((req, res) => {
res.send('POST HELLO EXPRESS');
});
보통은 메서드를 먼저쓰고 주소를 썻지만, 공통 주소면, 주소를 묶어서 주소먼저 쓰고 다음 메서드를 써 줌
res
.status(201)
.cookie('test', 'test')
.redirect('/admin')
미들웨어를 포함해서 응답이 두 번이상 되면 에러가 발생함