AirportService
공항 정보를 조회하고 캐싱하는 서비스. Redis 캐싱으로 City API 호출을 최소화한다.
의존성
캐시 설정
| 항목 | 값 |
|---|
| 캐시 키 프리픽스 | airport |
| TTL | 1일 |
| 키 형식 | airport::{iata} |
메서드
getAirportsMap
fun getAirportsMap(codes: Set<String>): Map<String, Airport>
여러 공항 정보를 맵으로 조회한다.
getAirportByIata
fun getAirportByIata(iata: String): Airport
단일 공항 정보를 조회한다. 캐시 우선, 없으면 API 호출.
조회 순서:
- Redis 캐시 확인
- CityClient API 호출 → 캐시 저장
- API 결과 없으면
Airport.ofIata(iata)로 기본 객체 생성
Airport 객체
| 필드 | 설명 |
|---|
iataCode | IATA 공항 코드 |
id | 내부 ID (null이면 미등록 공항) |
country | 국가 정보 |
timezone | 시간대 |
특징
- 1일 캐싱: 공항 정보는 거의 변경되지 않아 1일 TTL
- 폴백 처리: API 결과 없어도 IATA 코드로 기본 객체 생성
- 미등록 공항 감지:
id == null로 미등록 공항 판별