February 13, 2021
express 패키지 없이 라우터를 만들 때에는 요청 메소드와 주소별로 분기 처리를 하여 코드가 복잡하고 가독성이 좋지 않다. express에서는 Router 객체를 이용하여 라우팅을 깔끔하게 관리할 수 있다.
const express = require('express');
const router = express.Router();
router.get('/', (req, res) => {
res.send('Hello, Express');
});
module.exports = router;
const express = require('express');
const router = express.Router();
router.get('/', (req, res) => {
res.send('Hello, User');
});
module.exports = router;
...
const indexRouter = require('./');
const userRouter = require('./routes/user');
app.use('/', indexRouter);
app.use('/user', userRouter);
...
next('route');
라우터에 연결된 나머지 미들웨어들을 건너뛴다.
router.get('/user/:id', (req, res) => {
console.log(req.params, req.query);
});
/user/123 등의 처리도 라우터가 처리하며, 이 값은 req.params에 존재한다. 또, 주소에 쿼리스트링을 사용하면 req.query 객체 내에 데이터가 존재한다.
이 패턴을 사용할 때에는 일반 라우터보다 뒤에 존재해야한다. /user/like의 라우터가 존재하고 GET 요청이 들어왔을 때, /user/like GET 라우터가 위 라우터보다 뒤에 존재한다면 위 라우터가 라우팅한다.
router.route('/abc')
.get((req, res) => {
res.send('GET /abc');
})
.post((req, res) => {
res.send('POST /abc');
});