Back-end/Node.js

[Node.js] 라우터 분리하기

poppy 2021. 7. 16. 11:07
반응형

app.get 같은 메서드를 "라우터" 라고 합니다. app.js 에 라우터를 많이 연결하면 코드가 길어지고 복잡해지므로 라우터를 분리해보겠습니다!

 

routes 폴더를 만들고 그 안에 라우터를 분리하여 저장하겠습니다.

 

< routes/index.js >

const express = require('express');
const router = express.Router();

router.get('/', (req, res) => {
  res.send('Hello, Express');
});

module.exports = router;

 

< routes/user.js >

const express = require('express');
const router = express.Router();

router.get('/', (req, res) => {
  res.send('Hello, User');
});

module.exports = router;

 

분리한 라우터들을 app.js 에 연결하겠습니다.

// .. 생략
const indexRouter = require('./routes'); // = require('./routes/index')
const userRouter = require('./routes/user');

// .. 생략
app.use('/', indexRouter);
app.use('/user', userRouter);

require 메서드로 라우터가 저장된 경로를 지정해 라우터를 가져옵니다. 그 다음 app.use 를 통해 라우터를 연결합니다. 콘솔에서  node app.js 를 입력한 후 웹페이지에 접속하면 다음과 같은 화면을 볼 수 있습니다.

 

출력 결과

 

+ 라우터 관련 알아두면 좋은 것들!

 

1. 라우트 매개변수 패턴

다음 코드가 라우트 매개변수라고 불리는 패턴입니다! 주소를 보면 :id가 있는데 이 부분에 다른 값을 넣을 수 있습니다. 예를 들어 '/user/1', '/user/123' 입니다. 이 라우터는 일반 라우터보다 뒤에 위치해야한다는 것을 주의해주세요!! 

router.get('/user/:id', function(req, res) {
    console.log(req.params, req.query)
});

 

2. 같은 주소 다른 메서드

라우터가 같은 주소이지만 다른 메서드일 때 코드를 다음과 같이 간결하게 줄일 수 있습니다.

router.route('/user')
    .get((req, res) =>
        res.send('GET /user');
    })
    .post((req, res) =>
        res.send('POST /user');
    });
반응형