728x90
express.Router()는 라우팅을 모듈화하기 위한 미니 애플리케이션이야. Spring Boot의 @RestController를 여러 파일로 분리하는 것과 비슷한 개념이지.
왜 사용할까?
1. 코드 구조화
- 관련된 라우트들을 하나의 파일로 묶을 수 있어
- 프로젝트가 커져도 관리하기 쉬워져
2. 모듈화
- 각 기능별로 라우터를 분리
- 재사용 가능한 구조
3. 미들웨어 적용
- 특정 라우터에만 미들웨어를 적용할 수 있어
사용하지 않을 때 vs 사용할 때
사용하지 않으면 (app.js에 모든 라우트)
const express = require('express');
const app = express();
app.get('/api/todos', (req, res) => { /* ... */ });
app.post('/api/todos', (req, res) => { /* ... */ });
app.get('/api/users', (req, res) => { /* ... */ });
app.post('/api/users', (req, res) => { /* ... */ });
// 100개가 넘으면...?
Router 사용 (파일 분리)
// routes/todos.js
const express = require('express');
const router = express.Router();
// /api/todos 기준으로 경로 설정
router.get('/', (req, res) => {
// GET /api/todos
res.json({ todos: [] });
});
router.post('/', (req, res) => {
// POST /api/todos
res.json({ message: 'created' });
});
router.get('/:id', (req, res) => {
// GET /api/todos/:id
res.json({ id: req.params.id });
});
module.exports = router;
// routes/users.js
const express = require('express');
const router = express.Router();
router.get('/', (req, res) => {
res.json({ users: [] });
});
module.exports = router;
// app.js (메인 파일)
const express = require('express');
const app = express();
const todoRoutes = require('./routes/todos');
const userRoutes = require('./routes/users');
// 라우터 등록
app.use('/api/todos', todoRoutes);
app.use('/api/users', userRoutes);
app.listen(3000);
Spring Boot와 비교하면
// Spring Boot
@RestController
@RequestMapping("/api/todos")
public class TodoController {
@GetMapping
public List<Todo> getTodos() { }
@PostMapping
public Todo createTodo() { }
}
이게 Express에서는:
// Express Router
const router = express.Router();
router.get('/', getTodos);
router.post('/', createTodo);
app.use('/api/todos', router);
실전 구조 예시
project/
├── app.js
└── routes/
├── todos.js // Todo 관련 라우트
├── users.js // User 관련 라우트
└── auth.js // 인증 관련 라우트Spring Boot에서 Controller를 기능별로 나누듯이, Express에서도 Router로 기능별로 라우트를 나누는 거야. 네가 To-Do List 백엔드를 Express로 만든다면 이런 식으로 구조화하면 깔끔하게 관리할 수 있어.
728x90
'기술 학습' 카테고리의 다른 글
| Passport란? (0) | 2026.02.04 |
|---|---|
| 엔드포인트란? (0) | 2026.02.02 |
| MVC란? (0) | 2026.01.29 |
| Express To-Do List 프로젝트 코드 리뷰 (0) | 2026.01.29 |
| XSS(Cross-Site Scripting) 취약점이란 (0) | 2026.01.29 |