페어와 함께 만들어져 있는 Statesairline Server 코드를 수정하는 과제를 진행했다.
서버 데이터 조회
먼저 처음에는 query와 함께 들어온 GET 요청을 필터링하여 들어온 query와 일치하는 데이터만 응답하도록 코드를 작성했다.
요청으로 들어온 query는 request 객체의 query 프로퍼티에 담아서 전송되기 때문에 구조분해할당으로 각각의 변수에 넣어준다.
이 변수들을 사용하여 서버 데이터와 일치하는 값만 새로운 배열에 담아서 보내주면 된다.
filter 메서드를 사용하여 출발시간/도착시간 query가 들어오면 출발시간/도착시간이 같은 데이터만 필터링하고,
출발지/도착지 query가 들어오면 출발지/도착지가 같은 데이터만 필터링해서 response 객체에 json 메서드로 담아서 보내준다.
* filter 내부 로직은 뭔가 좀 더 깔끔한 방법을 연구해봐야겠다.
다음으로 parameter에 id가 담겨서 GET 요청이 오는데 서버 데이터중에 id가 같은 값을 찾아서 응답해주면된다.
query는 request객체의 query 프로퍼티에 담긴것 처럼 parameter는 request객체의 params 프로퍼티에 담겨있다.
이전과 마찬가지로 filter 메서드로 필터링해서 response객체에 담아서 보내준다.
예약 데이터 조회
예약 생성
POST 요청으로 body에 예약 데이터를 담아서 서버로 보내주면 서버에서 그 예약데이터를 잘 받았다고 응답으로 예약데이터를 다시 보내주는 작업을 했다.
request 객체의 body 프로퍼티에 예약 데이터가 있기 때문에 구조분해할당으로 꺼내서 새로운 객체에 담아 다시 응답으로 보내준다.
* id는 랜덤으로 생성하는 함수를 사용했다.
POST 요청의 응답코드는 201을 지정해주었다.
예약 조회
예약 데이터가 생성되면 예약이 잘 되었는지 조회하는 기능도 만들었다.
GET 요청에 parameter로 예약 데이터의 id와 전화번호를 보내주면 서버에서 예약 데이터 중에 일치하는 데이터가 있는지 확인하고 데이터가 있으면 응답으로 데이터를 보내준다.
이전에 했던것들과 마찬가지로 request 객체에서 params를 빼와서 filter로 같은 데이터가 있는지 필터링하고 응답으로 보내주었다.
예약 삭제
DELETE 요청과 함께 parameter로 예약 id가 오면 서버에서 해당 예약 데이터를 지우는 코드를 작성했다.
마찬가지로 filter 메서드로 id가 일치하는 예약 데이터를 삭제한 새로운 배열 removeBooking 배열을 만들고
다시 booking 배열에 spread 문법으로 할당해준다.
응답으로는 상태코드 200만 보내줬다.
Advanced PUT 요청
PUT 요청의 body로 변경할 데이터를 받으면 실제로 서버에 있는 JSON 파일을 변경해주는 코드를 작성했다.
실제로 파일을 변경해야 하기 때문에 fs모듈의 writeFileSync 기능을 사용했다.
먼저 parameter로 받은 id 와 일치하는 id를 갖는 데이터를 찾은 후, 그 데이터 중 body에 담겨온 데이터와 다른 부분이 있으면 교체해주는 작업을 했다.
기존 데이터를 수정하는 것이어서 map이 아니라 forEach 메서드를 사용했다.
바뀐 flights 배열을 서버 데이터 파일인 flightList.js에 넣어줘야 하는데, fs.writeFileSync 기능을 사용하여 기존 파일을 덮어씌워줬다.
* JSON.stringify의 세번째 인자를 사용하면 보기좋게 들여쓰기가 된다.
어느 데이터가 바뀌었는지 응답을 보내줘야 하기 때문에 index값을 따로 빼왔다.
이렇게 해놓으니 실제로 flightList.js파일이 test 할 때 마다 변경되는것을 확인했다.
'코드스테이츠' 카테고리의 다른 글
2/10 일일정리 기술면접준비 (0) | 2023.02.10 |
---|---|
2/9 일일정리 myagorastates server (0) | 2023.02.09 |
2/7 일일정리 Express서버, MiddleWare (0) | 2023.02.07 |
2/6 일일정리 CORS, node server 실습 (0) | 2023.02.06 |
2/3 일일정리 StatesAirline Client (0) | 2023.02.03 |
댓글