[Web Server] 기초 (3)

선정·2022년 6월 20일
0

과제 - StatesAirline Server

이번 과제의 목표는 클라이언트 요청에 따라 항공편과 예약 데이터를 조회, 생성, 수정 및 삭제 기능을 수행하는 서버를 Express를 사용하여 구현하는 것이었다. 항공편 데이터와 공항 데이터로 이용한 데이터는 객체로 이루어진 배열( [{}, {}, ...] )로 구성돼있다.


Flight API

1. 항공편 조회 (findAll)

request

  • [GET] /flight
  • 요청된 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
  • 파라미터가 없는 GET 요청은 저장돼 있는 모든 항공편을 조회한다.

2. uuid를 사용하는 항공편 조회 (findById)

request

  • [GET] /flight/{:id}
  • 요청된 {:id} 값과 동일한 uuid 값을 가진 항공편 데이터를 조회한다.
  • HTTP 요청 예시
    [GET] /flight/af6fa55c-da65-47dd-af23-578fdba40bed

3. 항공편 수정 (update)

request

  • [PUT] /flight/{:id}
  • 요청에 포함된 {:id} 값과 동일한 uuid 값을 가진 항공편을 수정한다.
  • HTTP 요청 예시
    [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);
  }
  }
}

Book API

profile
starter

0개의 댓글