Express에서 라우터를 사용하여 애플리케이션 구조화 방법

Express에서 라우터를 사용하여 애플리케이션 구조화 방법

Express에서 라우터는 웹 애플리케이션의 라우팅 로직을 모듈화하고 구조화하는 강력한 방법입니다. 라우터를 사용하면, 코드의 가독성과 유지 보수성을 높이면서, 애플리케이션의 다양한 기능을 논리적으로 분리할 수 있습니다.

라우터란?

Express의 라우터는 미들웨어와 경로 처리기를 단일 라우팅 시스템에 결합할 수 있는 기능입니다. 이를 통해 애플리케이션의 경로를 구성하고 관리하는 것이 더욱 효율적이고 체계적으로 됩니다.

라우터 사용 예제

▼ app.js

const express = require('express');
// 게시판과 방명록 라우터 모듈을 불러옵니다.
const boardRoutes = require('./routes/boardRoutes');
const guestRoutes = require('./routes/guestRoutes');

const app = express();
const port = 3000;

// 미들웨어 설정: JSON 형태의 요청 본문을 파싱할 수 있게 합니다.
app.use(express.json());
// '/board' 경로로 시작하는 요청들을 boardRoutes 라우터에 위임합니다.
app.use('/board', boardRoutes);
// '/guest' 경로로 시작하는 요청들을 guestRoutes 라우터에 위임합니다.
app.use('/guest', guestRoutes);

// 애플리케이션 루트 경로에 대한 GET 요청 처리: 메인 페이지를 응답합니다.
app.get('/', (req, res) => {
    res.send('메인 페이지');
});

// 서버 시작: 지정된 포트에서 서버를 시작하고, 시작 로그를 출력합니다.
app.listen(port, () => console.log(`App listening on port ${port}`));

위 코드는 ‘/board’와 ‘/guest’라는 두 개의 경로에 대해 각각의 라우터 모듈(boardRoutes, guestRoutes)을 적용하는 방법을 보여줍니다. 이를 통해 각 기능별로 코드를 분리하여 관리할 수 있습니다.

라우터 모듈 생성 방법

라우터 모듈은 Express의 Router 인스턴스를 사용하여 생성할 수 있습니다. 각 라우터 파일은 특정 경로에 대한 요청 처리 로직을 포함하며, 모듈로서 다른 파일에서 재사용될 수 있습니다.

▼ boardRoutes.js

const express = require('express');
// 새로운 라우터 객체를 생성합니다.
const router = express.Router();

// 게시판 메인 페이지에 대한 GET 요청 처리
router.get('/', (req, res) => {
    res.send('게시판 메인 페이지');
});

// 생성한 라우터 객체를 모듈로 내보냅니다.
module.exports = router;

▼ guestRoutes.js

const express = require('express');
// 새로운 라우터 객체를 생성합니다.
const router = express.Router();

// 방명록 메인 페이지에 대한 GET 요청 처리
router.get('/', (req, res) => {
    res.send('방명록 메인 페이지');
});

// 생성한 라우터 객체를 모듈로 내보냅니다.
module.exports = router;

각 라우터 모듈은 특정 경로(‘/board’, ‘/guest’)에 대한 요청을 처리하며, app.js 파일에서 해당 라우터를 애플리케이션에 적용합니다.

▼ 실행 결과 화면

라우터 사용 예제 실행 화면

라우터를 사용하는 이점

라우터를 사용하면 애플리케이션의 경로를 모듈별로 분리하여 관리할 수 있어, 애플리케이션의 복잡도를 줄이고 코드의 가독성을 향상시킬 수 있습니다. 또한, 코드의 재사용성이 높아지고 유지 보수가 용이해집니다.

자세한 정보는 Express 공식 문서의 라우팅 섹션에서 확인할 수 있습니다.

관련 이전 게시글

이 글이 도움이 되셨다면 공유 부탁 드립니다.

위로 스크롤