더북(TheBook)

예를 들어 /users/123?limit=5&skip=10이라는 주소의 요청이 들어왔을 때 req.paramsreq.query 객체는 다음과 같습니다.

{ id: '123' } { limit: '5', skip: '10' }

app.js에서 에러 처리 미들웨어 위에 넣어둔 미들웨어는 일치하는 라우터가 없을 때 404 상태 코드를 응답하는 역할을 합니다. 미들웨어가 존재하지 않아도 익스프레스가 자체적으로 404 에러를 처리해주기는 하지만, 웬만하면 404 응답 미들웨어와 에러 처리 미들웨어를 연결해주는 것이 좋습니다.

app.use((req, res, next) => {
  res.status(404).send('Not Found');
});

이 미들웨어를 제거하고 localhost:3000/abc에 접속하면 404 상태 코드와 함께 Cannot GET /abc 메시지가 응답됩니다.

라우터에서 자주 쓰이는 활용법으로 app.routerouter.route가 있습니다.

다음과 같이 주소는 같지만 메서드는 다른 코드가 있을 때 이를 하나의 덩어리로 줄일 수 있습니다.

router.get('/abc', (req, res) => {
  res.send('GET /abc');
});
router.post('/abc', (req, res) => {
  res.send('POST /abc');
});

다음과 같이 관련 있는 코드끼리 묶여 있어 더 보기 좋아집니다.

router.route('/abc')
  .get((req, res) => {
    res.send('GET /abc');
  })
  .post((req, res) => {
    res.send('POST /abc');
  });

라우터는 이 정도로만 알아보고, 다음 절에서 req, res 객체에 대해 알아봅시다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.