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에서 통합적으로 관리할 수 있어, 유지보수성이 향상됩니다.
'STUDY > ExpressJS' 카테고리의 다른 글
[4-2] Express에서 정적 파일들을 제공하기 위한 미들웨어 - static (0) | 2023.05.24 |
---|---|
[7-3] Express.js HTTP 보안강화 미들웨어 - helmet (0) | 2023.04.11 |
[5-1-1] Express.js 파라미터를 이용한 동적 URL처리 (0) | 2023.04.05 |
[4-3] Express.js 미들웨어 등록 메소드 - app.use() (0) | 2023.03.31 |
[4-2] Express.js HTTP요청의 body를 파싱하기 위한 미들웨어 - body-parser (0) | 2023.03.31 |