node.js Express router를 이용하여 client에 응답하기
저번에는 하나의 파일에 GET응답을 코드에 넣었지만 이번에는 router를 통해서 client에 get요청을 하겠습니다.
Router를 사용하지 않고 하나의 js파일에 코드를 작성한 경우
Router를 이용하여 다른 js파일에 작성한후 index.js파일에 삽입하는 경우
const express = require('express');
const members = require('./member'); // members 데이터 저장
const app = express();
app.get('/members', (req, res) => {
res.send(members).end(); // 모든 멤버를 client에 보낸다.
});
app.get('/members/:id', (req, res) => {
// id를 받고 존재하는지 확인후 client에 send한다.
// id존재유무 확인
// req.params.id는 client가 입력한 id(문자열)이다.
const bool = members.some(member =>
member.id === parseInt(req.params.id));
// 만약 bool이 참이면 id가 members에 존재
if(bool) res.send(members.filter(member =>
member.id === parseInt(req.params.id)));
// 만약 bool이 거짓이면 id가 members에 존재하지 않는다
else res.status(404).json({message : `ID ${req.params.id} NOT FOUND`});
res.end();
});
const PORT = process.env.PORT || 5000;
app.listen(PORT, () => console.log(`Server Started on PORT : ${PORT}`));
저번에 작성한 코드를 재사용합니다.
app.get('/members', (req, res) => {
res.send(members).end(); // 모든 멤버를 client에 보낸다.
});
app.get('/members/:id', (req, res) => {
// id를 받고 존재하는지 확인후 client에 send한다.
// id존재유무 확인
// req.params.id는 client가 입력한 id(문자열)이다.
const bool = members.some(member =>
member.id === parseInt(req.params.id));
// 만약 bool이 참이면 id가 members에 존재
if(bool) res.send(members.filter(member =>
member.id === parseInt(req.params.id)));
// 만약 bool이 거짓이면 id가 members에 존재하지 않는다
else res.status(404).json({message : `ID ${req.params.id} NOT FOUND`});
res.end();
});
저번에 사용한 코드에서 app.get부분을 잘라내고 다른 파일로 이동합니다.
파일명은 router.js이고 경로는 index.js과 같은경로로 합니다. 경로나 파일명은 원하는대로 변경 가능.
const express = require('express');
const router = express.Router();
const members = require('./member'); // members 데이터 저장
module.exports = router;
처음 router의 코드는 위와같이 합니다. express에 있는 Router를 이용하여 router기능을 만듭니다. 이때 router는 다른 파일에서도 사용을 해야 하기 때문에 module.exports를 사용합니다.
const express = require('express');
const router = express.Router();
const members = require('./member'); // members 데이터 저장
app.get('/members', (req, res) => {
res.send(members).end(); // 모든 멤버를 client에 보낸다.
});
app.get('/members/:id', (req, res) => {
// id를 받고 존재하는지 확인후 client에 send한다.
// id존재유무 확인
// req.params.id는 client가 입력한 id(문자열)이다.
const bool = members.some(member =>
member.id === parseInt(req.params.id));
// 만약 bool이 참이면 id가 members에 존재
if(bool) res.send(members.filter(member =>
member.id === parseInt(req.params.id)));
// 만약 bool이 거짓이면 id가 members에 존재하지 않는다
else res.status(404).json({message : `ID ${req.params.id} NOT FOUND`});
res.end();
});
module.exports = router;
이제 처음에 index.js파일에서 잘라낸 코드는 router.js에 위와같이 붙입니다. 하지만 이대로 바로 사용할수는 없습니다.
const express = require('express');
const router = express.Router();
const members = require('./member'); // members 데이터 저장
router.get('/members', (req, res) => {
res.send(members).end(); // 모든 멤버를 client에 보낸다.
});
router.get('/members/:id', (req, res) => {
// id를 받고 존재하는지 확인후 client에 send한다.
// id존재유무 확인
// req.params.id는 client가 입력한 id(문자열)이다.
const bool = members.some(member =>
member.id === parseInt(req.params.id));
// 만약 bool이 참이면 id가 members에 존재
if(bool) res.send(members.filter(member =>
member.id === parseInt(req.params.id)));
// 만약 bool이 거짓이면 id가 members에 존재하지 않는다
else res.status(404).json({message : `ID ${req.params.id} NOT FOUND`});
res.end();
});
module.exports = router;
app -> router로 변경해 줍니다.
const express = require('express');
const router = require('./router'); // router코드
const app = express();
// middleware 코드 작성
app.use('/', router);
// router 대신 require('./router') 사용 가능
const PORT = process.env.PORT || 5000;
app.listen(PORT, () => console.log(`Server Started on PORT : ${PORT}`));
index.js파일에 가서 위와 같이 작성을 합니다. app.get이 없어진 대신 router가 추가 된 것을 알수 있습니다.
Postman을 통해 확인하면 위 사진과 같이 결과가 나오는 것을 알수 있습니다. router를 쓰면 한 파일에 모든 코드를 작성할 필요가 없어져 코드가 깔끔해 진다는 것을 알수 있습니다.
댓글
댓글 쓰기