STUDY/[ JavaScript ]

Express Router

Lim임 2025. 9. 26. 01:59

Express Router란?

Express Router는 모듈식 마운팅 가능한 라우트 핸들러를 생성할 수 있게 해주는 미니 Express 애플리케이션이다. Router 인스턴스는 완전한 미들웨어와 라우팅 시스템이라고 볼 수 있다. 이를 "앱 안의 앱"이라고 생각하면 이해하기 쉽다.

기본 사용법

Router를 사용하려면 먼저 Express 모듈에서 Router를 가져와야 한다:

 

JavaScript

 

const express = require('express');

const router = express.Router();

이렇게 생성한 router 객체에 경로를 정의할 수 있다:

 

JavaScript

 

router.get('/', (req, res) => {

  res.send('홈 페이지입니다');

});

 

router.get('/about', (req, res) => {

  res.send('소개 페이지입니다');

});

그리고 이 라우터를 메인 앱에 연결한다:

 

JavaScript

 

const app = express();

app.use('/', router);

라우터 모듈화하기

프로젝트가 커질수록 모든 라우트를 하나의 파일에 정의하는 것은 유지보수를 어렵게 만든다. Express Router의 진정한 강점은 라우트를 모듈화할 수 있다는 점이다.

예를 들어 사용자 관련 라우트를 별도의 파일로 분리할 수 있다:

 

JavaScript

 

// routes/users.js

const express = require('express');

const router = express.Router();

 

router.get('/', (req, res) => {

  res.send('사용자 목록');

});

 

router.get('/:id', (req, res) => {

  res.send(`사용자 ID: ${req.params.id}`);

});

 

module.exports = router;

그리고 메인 app.js 파일에서 이를 불러와 사용한다:

 

JavaScript

 

// app.js

const express = require('express');

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

 

const app = express();

 

// '/users' 경로에 라우터를 마운트

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

이렇게 하면 /users와 /users/:id 경로에 접근할 수 있다.

미들웨어 활용하기

Router에서도 미들웨어를 사용할 수 있다. 이는 특정 라우트 그룹에만 미들웨어를 적용하고 싶을 때 유용하다.

 

JavaScript

 

// 이 라우터에만 적용되는 미들웨어

router.use((req, res, next) => {

  console.log('Time:', Date.now());

  next();

});

 

// 특정 경로에만 적용되는 미들웨어

router.use('/user/:id', (req, res, next) => {

  console.log('사용자 ID:', req.params.id);

  next();

});

라우트 매개변수 처리

Express Router는 URL의 매개변수를 쉽게 처리할 수 있게 해준다:

 

JavaScript

 

router.get('/posts/:postId/comments/:commentId', (req, res) => {

  console.log(`포스트 ID: ${req.params.postId}`);

  console.log(`댓글 ID: ${req.params.commentId}`);

  res.send('특정 포스트의 특정 댓글');

});

실제 프로젝트 구조 예시

실제 프로젝트에서는 보통 다음과 같은 구조로 라우터를 구성한다:

 

Code

 

project/

├── app.js

└── routes/

    ├── index.js

    ├── users.js

    ├── posts.js

    └── comments.js

이렇게 구조화하면 코드의 가독성과 유지보수성이 크게 향상된다.

'STUDY > [ JavaScript ]' 카테고리의 다른 글

JS JSX  (0) 2025.09.28
forEach for of for in nullish ?? 병합연산자  (0) 2025.09.26
캐시 추가하기  (0) 2025.09.23
리팩토링 / HTTP ERROR CODE / DELETE PUT  (0) 2025.09.22
이차원배열 Array.from() arr.fill()  (1) 2025.09.22