영벨롭 개발 일지

[Express]라우터(Router) 정리 본문

Back-end/Express

[Express]라우터(Router) 정리

영벨롭 2022. 7. 8. 18:03

[ 라우터 Router 란? ]

 

 라우터는 클라이언트의 요청 경로를 보고 이 요청을 처리할 수 있는 곳으로 기능을 전달해주는 역할을 합니다. 

 

 이러한 역할을 라우팅이라고 하는데, 애플리케이션 엔드 포인트(URI)의 정의를 하고 URI가 클라이언트 요청에 응답하는 방식을 의미합니다. 

 

 익스프레스는 라우팅을 깔끔하게 관리할 수 있다는 점에서 용이합니다. 

 

 

 

 

[ 라우터 사용하기 ]

 express.Router()

 express.Router 클래스를 사용하면 모듈식 마운팅이 가능한 핸들러를 작성할 수 있습니다. Router 인스턴스는 완전한 미들웨어이자 라우팅 시스템이며, 따라서 '미니 앱'이라고 불리는 경우가 많습니다. 

 

 

 Why Router?

 app.js에서 app.method()를 사용해 라우팅을 할 수 있지만, 프로젝트의 규모가 큰 경우 라우팅 할 경로가 많아지면서 app.js 파일의 코드가 길어지게 됩니다. 

 

 이 경우 유지보수가 어려워질 수 있으므로 route를 분리하여 사용하게 됩니다. 

 

const express = require('express');
const router = express.Router();

// method: get, post, put, delete, etc.
router.method(path, (req, res, next) => { ... });

module.exports = router;

 

 

routes/user.js

 프로젝트의 server 관련 파일들이 있는 위치에서 route 폴더를 만들어줍니다. 

 

 route 폴더 아래 사용자 관련 기능 라우팅을 담당할 user.js 파일을 하나 만들겠습니다. 

 

// routes/user.js

const express = require('express');
const router = express.Router();
const User = require('../model/User');

router.get('/', (req, res) => {
	// 응답 처리
});

router.post('/register', (req, res) => {
	// 응답 처리
});

module.exports = router;

 

app.js

 app.js에서 /user 인 엔드포인트로 라우트된 모듈을 불러줍니다. 

 

const express = require('express');
const app = express();
const PORT = 4000;

// routes
const userRouter = require('./routes/user')

app.get('/', (req, res) => {
  res.send({ success: true })
})

app.use('/user', userRouter)

app.listen(PORT, () => {
  console.log(`Server is running on ${PORT}`)
})

 

반응형