Node.js
[NodeJS] 라우터 분리하기
min_s
2025. 2. 17. 19:38
Express의 라우터 분리를 이용해보자. 프로젝트의 규모가 커질수록 매우 효과적이다.
프로젝트 구조가 이런식으로 되어 있다고 해보자.
/my-app
├── server.js
├── routes
│ ├── users.js
│ ├── products.js
├── package.json
└── node_modules
우선 메인 server.js 이다.
const userRoutes = require('./routes/users'): routes/users.js 파일을 불러와 userRoutes 변수에 저장
라우트 파일을 불러온 후, Expree에 등록해야 한다.
이때 app.use(경로, 라우터)를 사용하여 특정 경로에 해당하는 라우터를 사용한다.
- app.use('/users', userRoutes);
→ /users 경로로 들어오는 요청은 users.js의 라우터에서 처리 - app.use('/products', productRoutes);
→ /products 경로로 들어오는 요청은 product.js의 라우터에서 처리
const express = require('express');
const app = express();
const PORT = 3000;
// 라우터 파일 불러오기
const userRoutes = require('./routes/users');
const productRoutes = require('./routes/products');
app.use(express.json());
// 라우터 등록
app.use('/users', userRoutes);
app.use('/products', productRoutes);
app.listen(PORT, () => {
console.log(`Server is running on port ${PORT}`);
});
다음은 '/routes/users.js'이다.
요청을 적절하게 처리해준뒤에
module.exports = router; 를 입력하여 모듈을 내보낸다.
const express = require('express');
const router = express.Router();
// 사용자 목록 조회
router.get('/', (req, res) => {
res.json({ message: '사용자 목록' });
});
// 특정 사용자 조회
router.get('/:id', (req, res) => {
res.json({ message: `사용자 ID: ${req.params.id}` });
});
// 사용자 추가
router.post('/', (req, res) => {
res.json({ message: '새 사용자 추가됨' });
});
module.exports = router;
라우트 매개변수에 대해 알아보자.
router.get('users/:id/', function(req,res) {
console.log(req.params, req.query);
};
req.params 부분은 요청부분의 파라미터 즉 'users/:id/'의 부분에서 :id에 해당하는 부분이다.
/users/123?limit=5&skip=10 주소 요청인 경우에 콘솔 출력 결과는 다음과 같다.
{ id : '123' } { limit = '5', skip = '10'};
주소는 같지만 메서드가 다를 때에는 다음과 같이 그룹화할 수도 있지만, 자주 쓰이는 방법은 아니다.
router.route('/abc'){
.get((req, res) => {
res.send('GET /abc');
})
.post((req, res) => {
res.send('POST /abc');
});