본문 바로가기
혼자 공부하는 것들/node.js

[node.js & express.js] 깔끔하게 Routing을 해보자!

by applepick 2021. 9. 8.
반응형

키보드 추천 플랫폼을 혼자 구현해보면서 어떻게 하면 깔끔하게 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;

 이렇게 파일을 나누는 이유는 유지보수 측면에서 효율적입니다. 해당 경로로 들어오는 트래픽이 에러가 있다면 그 부분을 빠르게 찾을 수 있습니다. 혹시 더 좋은 방법이 있다면 알려주시면 감사합니다!

반응형

댓글