router 없이 핸들링
import express from 'express'; const app = express(); app.use(express.json()); app .route('/posts') .get((req, res) => { res.status(201).send('GET: /posts'); }) .post((req, res) => { res.status(201).send('POST: /posts'); }); app .route('/posts/:id') .put((req, res) => { res.status(201).send('PUT: /posts/:id'); }) .delete((req, res) => { res.status(201).send('DELETE: /posts/:id'); }); app.listen(8080);
서버에서 여러가지 경로에 대해 여러 http request method를 받을때 코드가 복잡하고, 가독성이 떨어질 수 있다.
router 를 사용한 핸들링
import express from 'express'; import userRouter from './routes/user.js'; import postRouter from './routes/post.js'; const app = express(); app.use(express.json()); app.use('/users', userRouter); app.use('/posts', postRouter); app.listen(8080);
/* userRouter */ import express from 'express'; const router = express.Router(); router.use((req, res, next) => { console.log('middleware for users!'); next(); }); router.get('/', (req, res) => { res.status(201).send('GET: /users'); }); router.post('/', (req, res) => { res.status(201).send('POST: /users'); }); router.put('/:id', (req, res) => { res.status(201).send('PUT: /users/:id'); }); router.delete('/:id', (req, res) => { res.status(201).send('DELETE: /users/:id'); }); export default router; /* postRouter */ import express from 'express'; const router = express.Router(); router.use((req, res, next) => { console.log('middleware for posts!'); next(); }); router.get('/', (req, res) => { res.status(201).send('GET: /posts'); }); router.post('/', (req, res) => { res.status(201).send('POST: /posts'); }); router.put('/:id', (req, res) => { res.status(201).send('PUT: /posts/:id'); }); router.delete('/:id', (req, res) => { res.status(201).send('DELETE: /posts/:id'); }); export default router;
위 코드와 같이 서버에서는 라우터만 등록을 하고, routes 경로내에 각 경로의 요청에 대해 처리하는 js를 만들어주는 것이 훨씬 가독성이 높다.