본문 바로가기

[Network] Airline 서버 구현 (1) : Airline Server API document

[Network] Airline 서버 구현 (1) : Airline Server API document

 

*  Express 프레임워크를 이용해 API 서버를 만들고, 로컬 호스트와 연결하기
*  클라이언트의 요청에 따라 항공편과 예약 데이터를 조회, 생성, 수정, 그리고 삭제하는 기능을 수행하는 서버 개발하기
-  Express 프로젝트에서 사용하는 폴더 구조를 이해하기
-  Express를 활용하여 API 요청 처리하기
-  router, controller 활용하기
-  Airport API, Flight API, Book API 에서 정의한 API 요청을 수행하는 코드를 작성하기

* 다음 글 : Airline 서버 구현 (2) : 서버 개발하기 

 

문제를 해결하기 전에, 문제가 무엇인지 파악하는 것이 우선이 돼야 한다. 생산적인 고민을 통해 문제를 정의하고, 차근차근 해결할 수 있어야 한다. 소프트웨어 엔지니어로서 낯선 문제를 만났을 때 문제 자체를 스스로 재정의하고 해결해나가는 능력은 필수사항이다.

 

StatesAirline Server API document

 

Airport API

 

1. 공항 이름 자동 완성

클라이언트에 공항 이름을 검색할 때, 자동 완성 기능이 동작해야 한다. 이때 사용하는 API이다.

Request

// [요청] 모든 공항 이름을 요청

GET  /airport

이 요청은 파라미터(query parameter)를 사용해야 한다. 파라미터는 다음과 같이 사용한다.

  • /airport?query=c

parameter
형식 설명 필수 포함 여부
query 입력 문자 (문자열) query 값이 포함된 공항 조회 필수

 

Response

응답은 다음과 같은 JSON 형식이다.

[
  {
      "name" : "인천",
      "code" : "ICN"
  }
   ...
]
 

 


 

Book API

 

1. 예약 조회

클라이언트에서 모든 예약을 조회할 때 사용하는 API이다.

Request

// [요청] 모든 예약을 조회하는 HTTP 요청
GET  /book

Response

응답은 다음과 같은 JSON 형식이다.

[
    {
       "booking_uuid": "1c69bd78-9404-4138-9e01-9b66db9d65ff",
       "flight_uuid": "af6fa55c-da65-47dd-af23-578fdba40bed",
       "name": "김코딩",
       "phone": "010-1234-5678",
    }
   ...
]

 

2. 특정 예약자 전화번호에 맞는 예약 조회

클라이언트에서 예약자의 전화번호를 기준으로 예약을 조회할 때 사용하는 API이다.

Request

 GET  /book/{:phone}
  • 요청 된 {:phone} 값과 동일한 phone 값을 가진 모든 예약을 조회한다.
  • {:phone} 에는 phone값을 넣어준다. (아래 예시 참고)
GET  /book/010-1234-5678

Response

응답은 다음과 같은 JSON 형식이다.

[
    {
       "booking_uuid": "1c69bd78-9404-4138-9e01-9b66db9d65ff",
       "flight_uuid": "af6fa55c-da65-47dd-af23-578fdba40bed",
       "name": "김코딩",
       "phone": "010-1234-5678",
    }
  ...
]

 

3. 특정 예약자 전화번호와 항공평 uuid에 맞는 예약 조회

 GET  /book/{:phone}/{:flight_uuid}
  • 요청에 포함된 {:phone} 값과 동일한 예약 중 {:flight_uuid} 값과 동일한 예약을 조회한다.
  • (아래 예시를 참고)
GET  /book/010-1234-5678/af6fa55c-da65-47dd-af23-578fdba40bed

Response

응답은 다음과 같은 JSON 형식이다.

[
    {
       "booking_uuid": "1c69bd78-9404-4138-9e01-9b66db9d65ff",
       "flight_uuid": "af6fa55c-da65-47dd-af23-578fdba40bed",
       "name": "김코딩",
       "phone": "010-1234-5678",
    }
]

 

4. 예약 생성

클라이언트에서 예약을 생성할 때 사용하는 API이다.

Request

// [요청] 새로운 예약을 생성하는 HTTP 요청
POST  /book

요청에 함께 전달하는 JSON 데이터로 새로운 예약을 생성한다. POST 요청 본문엔 다음 내용을 포함한다.

  • 요청 형식: JSON
    • MIME 타입: application/json

속성
형식 설명 필수 포함 여부
flight_uuid 문자열 예약한 항공편 고유 아이디 필수
name 문자열 예약자 이름 필수
phone 문자열 예약자 핸드폰 번호 필수

Response

응답은 다음과 같은 JSON 형식이다.

   {
       "booking_uuid": "1c69bd78-9404-4138-9e01-9b66db9d65ff",
       "flight_uuid": "af6fa55c-da65-47dd-af23-578fdba40bed",
       "name": "김코딩",
       "phone": "010-1234-5678",
    }

 


5. 예약 삭제

클라이언트에서 특정 항공편 예약을 삭제할 때 사용하는 API이다.

Request

 DELETE  /book/{:booking_uuid}
  • 요청에 포함된 {:booking_uuid} 값과 동일한 booking_uuid 예약을 삭제한다.
  • (아래 예시를 참고)
DELETE  /book/1c69bd78-9404-4138-9e01-9b66db9d65ff

Response

응답은 다음과 같은 JSON 형식이다.

{
  "booking_uuid": "1c69bd78-9404-4138-9e01-9b66db9d65ff"
}
 

Flight API

 

1. 항공편 조회

클라이언트에서 항공편을 조회할 때 사용하는 API이다.

Request

// [요청] 모든 항공편을 조회하는 HTTP 요청
GET /flight
  • 파리미터가 없는 GET 요청은 저장된 모든 항공편을 조회한다.
  • 이 요청은 추가적인 파라미터(query parameter)를 사용할 수 있다. 파라미터는 다음과 같이 사용할 수 있다.
    • /flight?departure_times=2021-12-02T12:00:00&arrival_times=2021-12-03T12:00:00
    • /flight?departure=ICN&destination=CJU

 

parameter 형식 설명 필수 포함 여부
departure_times 출발 시간 (문자열) departure_times 값이 포함된 항공편 조회 필수 아님
arrival_times 도착 시간 (문자열) arrival_times 값이 포함된 항공편 조회 필수 아님
departure 출발지 (문자열) departure 값이 포함된 항공편 조회 필수 아님
destination 도착지 (문자열) destination 값이 포함된 항공편 조회 필수 아님

Response

응답은 다음과 같은 JSON 형식이다.

[
   {
     "uuid": "af6fa55c-da65-47dd-af23-578fdba40bed"
     "departure": "ICN",
     "destination": "CJU",
     "departure_times": "2021-12-03 12:00:44",
     "arrival_times": "2021-12-03 12:00:44",
   },
   ...
]

 

메시지에서 사용하는 속성은 다음과 같다.

속성 형식 설명
uuid 문자열 고유한 아이디
departure 문자열 출발지
destination 문자열 도착지
departure_times 문자열 출발 시간
arrival_times 문자열 도착 시간

 

 

2. uuid에 맞는 항공편 조회

클라이언트에서 고유 ID 값을 기준으로 항공편을 조회할 때 사용하는 API 이다.

Request

 GET  /flight/{:uuid}
  • 요청된 {:uuid} 값과 동일한 uuid 값을 가진 항공편을 조회한다.
  • {:uuid} 에는 uuid값을 아래 예시와 같이 넣어준다.
GET  /flight/af6fa55c-da65-47dd-af23-578fdba40bed

Response

응답은 다음과 같은 JSON 형식이다.

[
   {
     "uuid": "af6fa55c-da65-47dd-af23-578fdba40bed"
     "departure": "ICN",
     "destination": "CJU",
     "departure_times": "2021-12-03 12:00:44",
     "arrival_times": "2021-12-03 12:00:44",
   }
]

 

 

3. 항공편 수정

클라이언트에서 고유 ID 값을 기준으로 항공편을 수정할 때 사용되는 API이다.

Request

// [요청] 특정 항공편을 수정하는 HTTP 요청
PUT  /flight/{:uuid}
  • 요청에 포함된 {:uuid} 값과 동일한 uuid 값을 가진 항공편을 수정한다.
  • {:uuid} 에는 아래와 같이 uuid값을 넣어준다.  
PUT  /flight/af6fa55c-da65-47dd-af23-578fdba99bed

 

PUT 요청 본문에는 다음 내용을 포함한다.

  • 요청 형식: JSON
    • MIME 타입: application/json
속성 형식 설명 필수 포함 여부
departure 문자열 출발지 필수 아님
destination 문자열 도착지 필수 아님
departure_times 문자열 출발 시간 필수 아님
arrival_times 문자열 도착 시간 필수 아님

Response

응답은 다음과 같은 JSON 형식에, 변경 사항이 적용된 데이터이다.

 {
    "uuid" : "af6fa55c-da65-47dd-af23-578fdba99bed",
    "departure" : "ICN",
    "destination" : "CJU",
    "departure_times" : "2021-12-02T11:00:00",
    "arrival_times" : "2021-12-04T15:00:00"
 }

 

 

* 다음 글 : Airline 서버 구현 (2) : 서버 개발하기 *

728x90
⬆︎