CityResponse
도시/공항 API 응답 DTO 모음. 도시, 공항, 국가 정보.
클래스 구조
NameResponse
다국어 이름.
| 필드 | 타입 | 설명 |
|---|---|---|
ko | String? | 한글명 |
en | String? | 영문명 |
local | String? | 현지어명 |
Serializable: serialVersionUID = 1L
Airport
공항 정보.
| 필드 | 타입 | 설명 |
|---|---|---|
id | UUID? | 공항 ID |
iataCode | String | IATA 코드 |
names | NameResponse | 공항명 |
shortNames | NameResponse? | 축약명 |
country | SimpleCountryResponse | 국가 정보 |
city | SimpleCityResponse | 도시 정보 |
timezone | String? | 타임존 |
poiId | String? | POI ID |
계산 프로퍼티:
name: ko 또는 en 우선shortName: shortNames.ko 또는 namezoneId: ZoneId.of(timezone)
팩토리 메서드:
fun ofIata(iata: String): Airport // IATA 코드만으로 생성SimpleCityResponse
간단한 도시 정보.
| 필드 | 타입 | 설명 |
|---|---|---|
iataCode | String | IATA 코드 |
names | NameResponse | 도시명 |
regionId | UUID? | 지역 ID |
zoneId | UUID? | 존 ID |
계산 프로퍼티:
name: ko 또는 en 우선
SimpleCountryResponse
간단한 국가 정보.
| 필드 | 타입 | 설명 |
|---|---|---|
code | String | 국가 코드 |
names | NameResponse | 국가명 |
City
도시 상세 정보.
| 필드 | 타입 | 설명 |
|---|---|---|
id | UUID | 도시 ID |
type | String | 타입 (CITY 등) |
iataCode | String | IATA 코드 |
names | NameResponse | 도시명 |
shortNames | NameResponse? | 축약명 |
regionId | UUID? | 지역 ID |
zoneId | UUID? | 존 ID |
airportIataCodes | List<String> | 공항 코드 목록 |
country | SimpleCountryResponse | 국가 정보 |
city | SimpleCityResponse? | 상위 도시 |
timezone | String? | 타임존 |
poiId | String? | POI ID |
기본값:
val seoul: City = City(
id = UUID.fromString("6affe3ff-d59d-44da-b674-1aee56bf21fd"),
iataCode = "SEL",
names = NameResponse(ko = "서울", en = "Seoul"),
airportIataCodes = listOf("ICN", "GMP"),
country = SimpleCountryResponse(code = "KR", names = NameResponse(ko = "대한민국"))
)사용처
| 사용 위치 | 용도 |
|---|---|
| CityClient | 도시/공항 API 응답 |
| AirportService | 공항 정보 캐싱 |
| CityService | 도시 정보 캐싱 |
| LocationService | 위치 해석 |
특징
- Serializable: 모든 DTO가 직렬화 가능 (캐싱용)
- 다국어 지원: ko/en/local 다국어 이름
- IATA 기반: IATA 코드로 식별
- 계층 구조: City → Airport → Country 관계
- 타임존: 시간대 정보 포함