본문 바로가기
STUDY/ExpressJS

[5-3] Express.js 라우터 모듈화

by Y.Choi 2023. 4. 5.
728x90
반응형

Express.js에서 라우팅 로직을 모듈화하여 구성하면, 코드의 가독성을 높이고 유지보수를 쉽게할 수 있습니다.

 

 

1) 새로운 파일에 라우터 코드 작성하기
    users.js 파일에 /users 경로의 GET 요청에 대한 핸들러를 작성합니다.

 

users.js

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

router.get('/', (req, res) => {
  res.send('User List');
});

module.exports = router;

 

router 객체는 express.Router() 메소드를 호출하여 생성됩니다. 이 객체는 Express.js에서 라우팅 로직을 처리하는 핵심 객체입니다. 
router.get() 메소드를 사용하여 해당 경로로 GET 요청이 들어왔을 때 실행할 핸들러 함수를 등록합니다.

그리고, module.exports를 통해 해당 모듈을 외부에 노출시킵니다. 이렇게 노출된 모듈은 require() 함수를 사용하여 다른 모듈에서 불러와서 사용할 수 있습니다.

 

 

아래는 사용자 관리를 위한 다양한 라우트를 정의한 예시입니다. 

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

router.get('/', (req, res) => {
  res.send('All users');
});

router.get('/:id', (req, res) => {
  const id = req.params.id;
  res.send(`User ${id}`);
});

router.post('/', (req, res) => {
  res.send('Create a user');
});

router.put('/:id', (req, res) => {
  const id = req.params.id;
  res.send(`Update user ${id}`);
});

router.delete('/:id', (req, res) => {
  const id = req.params.id;
  res.send(`Delete user ${id}`);
});

module.exports = router;

 

/users로 GET 요청을 보내면 "All users"를 응답으로 보내고, 

/users/:id로 GET 요청을 보내면 해당 ID를 가진 사용자를 응답으로 보냅니다. 

POST 요청을 보내면 "Create a user"를 응답으로 보내고, 

PUT 요청을 보내면 해당 ID를 가진 사용자를 업데이트하고 "Update user {id}"를 응답으로 보냅니다. 

마지막으로 DELETE 요청을 보내면 해당 ID를 가진 사용자를 삭제하고 "Delete user {id}"를 응답으로 보냅니다.

 

 

 

2) Express.js에서 라우터 코드 사용하기
app.js 파일에서 users.js 파일에 작성한 라우터 코드를 불러와서 사용합니다.

app.js

const express = require('express');
const usersRouter = require('./routes/users');

const app = express();

app.use('/users', usersRouter);

// ...

 

app.js 파일에서는 express.Router() 메소드를 호출하여 생성된 router 객체를 app.use() 메소드를 통해 사용합니다. app.use() 메소드의 첫 번째 인자로 등록한 경로는 해당 라우터에 접근하기 위한 기본 경로(prefix)가 됩니다. 이후에 router.get() 등의 메소드에서 등록한 경로는 이 기본 경로에 추가적으로 연결됩니다.

 


위와 같은 방식으로 라우팅 로직을 모듈화하여 작성하면, 파일의 크기가 작아지고 코드의 가독성이 좋아집니다. 또한, 여러 개의 라우터 모듈을 사용하여 작성한 라우팅 로직을 app.js에서 통합적으로 관리할 수 있어, 유지보수성이 향상됩니다.

 

728x90
반응형