node.js Express GET요청으로 특정멤버를 Client에 보내기
저번 글에서 GET요청을 받을때 모든 members의 데이터를 보냈습니다. 이번에는 client가 특정 id를 server에 보내면 server에서 해당 id에 맞는 member를 보내는 것이다. 만약 존재하지 않는다면 상태코드 404를 출력하고 잘못됬다고 알려준다.
const express = require('express');
const members = require('./member'); // members 데이터 저장
const app = express();
app.get('/members', (req, res) => {
res.send(members).end(); // 모든 멤버를 client에 보낸다.
});
const PORT = process.env.PORT || 5000;
app.listen(PORT, () => console.log(`Server Started on PORT : ${PORT}`));
위 코드에서부터 시작한다. 위 코드는 이전에 작성한 코드이다. 이전 글을 참고하면 된다.
app.get('/members/:id', (req, res) => {
// id를 받고 존재하는지 확인후 client에 send한다.
});
저번의 app.get과 다른점이 있다. ':id'가 추가가 됬는데 이는 url마지막에 숫자를 기입하면 서버에서는 이것을 id로 인식한다.
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));
});
일단 client가 입력한 id가 존재하는지 확인을 해야 한다. 'some'method를 이용하여 존재유무를 boolean으로 결과를 저장한다.
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();
});
'bool'값이 참과 거짓에 따라 client에 다르게 데이터를 전달해야 합니다. id가 존개하면 해당 member의 데이터를 보내야 하고 그렇지 않으면 해당 ID가 발견이 안됬다고 응답을 해야 합니다.
위에서 Postman을 이용해 결과를 확인해 볼수 있습니다. 존재하지 않는 id 7을 요청할때 server에서 존재하지 않는 id라는 것을 message로 확인할수 있습니다. 반면 존재하는 id 1을 요청할때는 server에서 해당 id의 정보를 보내준 것을 확인할수 있습니다.
이전글 : node.js Express GET요청으로 모든멤버를 Client에 보내기
댓글
댓글 쓰기