[javascript] Express.js에서의 라우터 분리 방법

Express.js는 Node.js 기반의 웹 프레임워크로, 라우팅을 통해 클라이언트 요청을 핸들링하는 기능을 제공합니다. 큰 규모의 애플리케이션을 개발할 때, 모든 라우트 핸들러를 한 파일에 작성하는 것은 코드의 가독성과 유지보수에 어려움을 초래할 수 있습니다. 이런 경우에는 라우터를 분리해서 관리하는 것이 좋습니다.

라우터 분리 방법

Express.js에서 라우터를 분리하는 가장 일반적인 방법은 미들웨어로서 express.Router()를 사용하는 것입니다. 이를 이용하면 라우터를 모듈로 분리할 수 있고, 애플리케이션의 다양한 부분에서 재사용할 수 있습니다.

아래는 예시 코드입니다.

// routes/auth.js
const express = require('express');
const router = express.Router();

// 라우트 정의
router.get('/login', (req, res) => {
    // 로그인 페이지 렌더링
});

router.post('/login', (req, res) => {
    // 로그인 처리 로직
});

module.exports = router;

라우터 모듈을 따로 분리한 뒤, 이를 다른 파일에서 사용할 수 있습니다. 이를 위해서는 다음과 같이 app.js 또는 라우터를 사용하는 파일에서 require를 통해 해당 모듈을 가져와야 합니다.

// app.js
const express = require('express');
const app = express();

const authRouter = require('./routes/auth');

app.use('/auth', authRouter);

위의 예시에서는 /auth 경로에 대한 요청을 authRouter에서 처리하도록 설정되었습니다. /auth/login 경로에 대한 GET 요청은 authRouterGET /login 핸들러에서 처리하고, POST 요청은 authRouterPOST /login 핸들러에서 처리합니다.

활용 예시

라우터를 분리하면 더욱 모듈화된 방식으로 코드를 구성할 수 있습니다. 예를 들어, 회원 관리, 상품 관리, 주문 관리 등과 같은 기능을 가진 서브 라우터를 별도 파일로 분리하여 사용할 수 있습니다. 이는 코드의 구성을 단순화하고, 여러 모듈간의 충돌을 방지하는 데 도움을 줍니다.

// routes/users.js
const express = require('express');
const router = express.Router();

// 회원 관리 라우트 정의
router.get('/', (req, res) => {
    // 회원 목록 조회
});

router.post('/', (req, res) => {
    // 회원 등록
});

module.exports = router;
// app.js
const express = require('express');
const app = express();

const userRouter = require('./routes/users');

app.use('/users', userRouter);

위의 코드에서는 /users 경로에 대한 요청을 userRouter에서 처리하도록 설정되었습니다. /users 경로에 대한 GET 요청은 userRouterGET / 핸들러에서 처리하고, POST 요청은 userRouterPOST / 핸들러에서 처리합니다.

결론

Express.js에서 라우터를 분리하는 것은 코드의 가독성과 유지보수성을 높이는 데 도움이 됩니다. express.Router()를 활용하여 라우터를 모듈화하면 코드의 구성을 단순화하고, 다른 모듈과의 충돌을 방지할 수 있습니다. 큰 규모의 애플리케이션 개발 시에는 라우터를 적절하게 분리하여 사용하면 효율적인 개발이 가능해집니다.


참고 문서