* 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) : 서버 개발하기 *
'FE > Server' 카테고리의 다른 글
쿠키(Cookie)의 개념과 작동원리 (0) | 2023.05.02 |
---|---|
mkcert를 이용한 로컬에서 HTTPS 서버 만들기 (0) | 2023.04.28 |
[Network] Airline 서버 구현 (2) : 서버 개발하기 (0) | 2023.04.09 |
[Network] Express로 간단한 웹 서버 만들어보기 (라우터) (0) | 2023.04.05 |
[Network] HTTP 모듈을 사용한 서버 다뤄보기 (0) | 2023.04.04 |