* * 작성 중인 글입니다. * *
🍀 오늘의 날짜 : 23년 04월 06 ~ 7
🍀 오늘의 주제 : 서버 찍먹 심화 버전 2
[1] 클라이언트와 서버 그리고 DB 의 연결고리 🔖
클라이언트/서버/DB 3종 세트
- 클라이언트에서 요청 (request) : POST
- 클라이언트에서 조회 (request) : GET
- 클라이언트에서 삭제 요청(request) : DELETE
- 클라이언트에서 ..?.
- 서버에서 DB로 요청요청
- 서버에서 클라이언트로 응답응답
- DB에서 응답 응답
- 들어온 정보 저장 저장
[2] Node.js와 Express의 차이 🔖
- 작성 예정
[3] json 파일들에서 요청으로 들어온 정보와 일치하는 data 응답하기 🔖
클라이언트로부터 특정 data를 응답해달라는 요청이 들어왔을 때, ( ex. id가 3인 회원 정보를 보내주세요. ) json 파일에서 원하는 정보를 찾아서 응답으로 보내기 위해 다음과 같이 filter을 이용해여 시도해보았습니다. __ first try : [ ERROR ]
// Datas는 배열 안에 객체 형태의 json 파일이라 가정.
// ex. Datas = [{id:1, name:emma}, {id:2, name:jason}, {id:3, name:Tiffany} ]
//생략
const {id} = req.params;
let list = Datas;
if(req.params.id){ // 요청이 알맞게 들어왔을 때,
list = list.filter( (d) =>{
return res.status(200).send(d);
}
else{
return res.status(404).send('Sooooory');
}
}
else { // 요청이 비어있는 상태로 들어왔을 때,
return res.status(404).send('no input');
}
결과 :
Expected: 200
Received: 404
filter 메소드로 원하는 data를 찾은 다음 응답을 보내고 종료되는 것이 아니라, 일치하는 data가 없는 경우에도 404로 응답을 보내기 때문에 404로 응답이 보내지는 문제가 발생했습니다.
filter 메소드를 사용하지 않고 list 변수에 처음부터 find 메소드를 이용해서 코드를 간편하게 수정해보겠습니다.
//생략
const {id} = req.params;
let list = Datas.find(d => parseInt(id) === d.id);
// [주의] req.params.id는 문자열.. json 파일에서 원하는 속성의 값이 숫자라면 parseInt()를 사용!!
if(list) {
res.status(200).send(list);
}else{
res.status(404).send('Sorry');
};
결과는 에러 없음으로 무사히 원하는 요청에 따른 응답을 보낼 수 있게 되었습니다.
간단한 느낀 점
# 아직도 무한 조건문 쓰는 습관이 남아있네요.. 반성합니다.
'일상의 기록 > 🌷DAILY 회고록 : 코드스테이츠' 카테고리의 다른 글
[230412] 즐겁지만 괴로운 알고리즘 (feat. 재귀함수) (0) | 2023.04.12 |
---|---|
[230410] Section 02 회고 : 스스로에게 실망.. (0) | 2023.04.10 |
[230404 ~ 5] 아주 살짝 Web server 찍먹해보기 (0) | 2023.04.04 |
[230403] Ajax , Axios, Fetch 데이터 통신하기 (0) | 2023.04.04 |
[230329 ~ 30] Rest API 를 이용하여 요청과 응답하는 방법 배워보기 (0) | 2023.03.29 |