이번 과제의 목표는 클라이언트 요청에 따라 항공편과 예약 데이터를 조회, 생성, 수정 및 삭제 기능을 수행하는 서버를 Express를 사용하여 구현하는 것이었다. 항공편 데이터와 공항 데이터로 이용한 데이터는 객체로 이루어진 배열( [{}, {}, ...]
)로 구성돼있다.
1. 항공편 조회 (findAll)
request
departure_times
, arrival_times
, destination
, departure
값과 동일한 값을 가진 항공편 데이터를 조회한다./flight?departure_times=2021-12-02T12:00:00&arrival_times=2021-12-03T12:00:00
/flight?departure=ICN&destination=CJU
2. uuid를 사용하는 항공편 조회 (findById)
request
{:id}
값과 동일한 uuid
값을 가진 항공편 데이터를 조회한다.[GET] /flight/af6fa55c-da65-47dd-af23-578fdba40bed
3. 항공편 수정 (update)
request
{:id}
값과 동일한 uuid
값을 가진 항공편을 수정한다.[PUT] /flight/af6fa55c-da65-47dd-af23-578fdba40bed
const flights = require('../repository/flightList'); // 외부 데이터로 작성된 항공편 데이터 참조
module.exports = {
// 1. 항공편 조회
findAll: (req, res) => {
if (req.query.departure_times && req.query.arrival_times) {
const filteredFlightsByTime = flights.filter((el) => {
return req.query.departure_times === el.departure_times && req.query.arrival_times === el.arrival_times;
})
return res.status(200).json(filteredFlightsByTime);
}
if (req.query.destination && req.query.departure) {
const filteredFlightsByPlace = flights.filter((el) => {
return req.query.destination === el.destination && req.query.departure === el.departure;
})
return res.status(200).json(filteredFlightsByPlace);
}
res.json(flights);
},
//2. uuid를 사용하는 항공편 조회
findById: (req, res) => {
return res.status(200).json(flights.filter(el => req.params.id === el.uuid));
},
// 3. 항공편 수정
update: (req, res) => {
let data = {};
flights.forEach((el, idx) => {
if (req.params.id === el.uuid) {
data.uuid = el.uuid;
data.departure = req.body.departure ? req.body.departure : el.departure;
data.destination = req.body.destination ? req.body.destination : el.destination;
data.departure_times = req.body.departure_times ? req.body.departure_times : el.departure_times;
data.arrival_times = req.body.arrival_times ? req.body.arrival_times : el.arrival_times;
flights[idx] = data;
}
})
return res.status(201).json(data);
}
}
}