express router

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를 만들어주는 것이 훨씬 가독성이 높다.