반응형
키보드 추천 플랫폼을 혼자 구현해보면서 어떻게 하면 깔끔하게 router를 구성할 수 있을까 고민을 많이 해보았습니다.
// app.js
var indexRouter = require('./routes/index');
var keyboardRouter = require('./routes/keyboard');
var app = express();
... //생략
app.use('/', indexRouter);
app.use('/keyboard', keyboardRouter);
module.exports = app;
처음 서버를 구축할 때 app.js에서 모든 라우터를 처리하는 방법은 비효율적입니다. 물론 한 파일로 구성해도 프로그램이 돌아가긴 하지만, 나중에 프로젝트를 확장할 때 유지보수 측면에서는 꽝이라고 생각합니다. 저는 이 부분을 개선해보고 싶었습니다.
코드를 보자면 app.use를 통해 해당 경로를 router파일로 연동시켜줍니다. (routers라는 파일이 이번 게시글의 핵심입니다.)
기본 경로 '/'로 들어오면 indexRouter가 처리할 수 있도록 하였습니다. '/keyboard'로 들어오는 트래픽은 keyboardRouter에서 처리할 수 있도록 하였습니다. 예를 들어 '/keyboard', '/keyboard/posting', '/keyboard/result' 등등... /keyboard 경로 안에서 더 세분화된 경로를 설정해 줄 수 있습니다.
// ../routes/index.js
const express = require('express');
const router = express.Router();
/* GET home page. */
router.get('/', function(req, res, next) {
res.render('index.ejs');
});
module.exports = router;
// ../routes/keyboard.js
const express = require('express');
const router = express.Router();
const keyboard_result = require('../API/controllers/keyboard_result.controller'),
keyboard = require('../API/controllers/keyboard.controller');
const keyboard_validate = require('../API/validation/keyboard');
router.get('/', keyboard.get_keyboard);
router.post('/result',keyboard_validate.keyboard_validation, keyboard_result.post_result);
module.exports = router;
이렇게 파일을 나누는 이유는 유지보수 측면에서 효율적입니다. 해당 경로로 들어오는 트래픽이 에러가 있다면 그 부분을 빠르게 찾을 수 있습니다. 혹시 더 좋은 방법이 있다면 알려주시면 감사합니다!
반응형
'혼자 공부하는 것들 > node.js' 카테고리의 다른 글
node.js 에서 Joi를 통해 validation를 검증해보자! (2) | 2021.08.12 |
---|---|
node.js 파일목록 뽑아내기 (0) | 2020.11.22 |
node.js Not found 예외처리 추가 (0) | 2020.11.21 |
node.js 파일 읽어오기 [CRUD중 Read 실습 ] (0) | 2020.11.18 |
[node.js + react] Would you like to run the app on another port instead? (Y/n) PORT오류 손쉽게 해결하기 (0) | 2020.11.13 |
댓글