해외여행을 앞두고 공항 주차장 예약을 하려고 인천공항 사이트에 들어갔다가, 실시간 잔여 현황을 제공하는 공공 API가 있다는 걸 알게 됐습니다. 어차피 API 써보는 연습도 할 겸 간단히 만들어봤습니다.
인천공항 주차 API
공공데이터포털(data.go.kr)에서 "인천국제공항 주차장 정보" API를 찾을 수 있습니다. 주차장별 총 면수, 현재 사용 면수, 잔여 면수를 실시간으로 제공합니다.
GET https://apis.data.go.kr/B551177/StatusOfParking/getIcrsParkingInfo
?serviceKey={서비스키}
&numOfRows=30
&pageNo=1
&type=json
응답 파싱
응답 JSON에서 주차장별 정보를 파싱합니다. 주차장 위치(터미널 1/2), 구역(단기, 장기, P1~P6 등), 전체 면수, 잔여 면수가 포함돼 있습니다.
public List<ParkingInfo> getRemains() {
ResponseEntity<String> resp = restTemplate.getForEntity(apiUrl, String.class);
JsonNode root = objectMapper.readTree(resp.getBody());
JsonNode items = root.path("response").path("body").path("items").path("item");
List<ParkingInfo> result = new ArrayList<>();
for (JsonNode item : items) {
result.add(ParkingInfo.builder()
.parkingName(item.path("parkingname").asText())
.capacity(item.path("parking").asInt())
.remaining(item.path("parkingavailable").asInt())
.build());
}
return result;
}
@Data @Builder
public class ParkingInfo {
private String parkingName;
private int capacity;
private int remaining;
public int getOccupancyRate() {
return (int) ((double)(capacity - remaining) / capacity * 100);
}
}
출력 결과 예시
============ 인천공항 주차 현황 ============
[제1터미널]
단기주차장: 잔여 1,204 / 전체 4,300 (72% 사용 중)
장기주차장: 잔여 3,812 / 전체 8,200 (54% 사용 중)
[제2터미널]
단기주차장: 잔여 532 / 전체 2,700 (80% 사용 중)
장기주차장 P2: 잔여 4,201 / 전체 7,300 (42% 사용 중)
==========================================
스케줄러로 주기적 확인
여행 전날 저녁부터 출발 당일 아침까지 30분마다 주차 현황을 로그로 남기도록 스케줄러를 잠깐 켜두었습니다. 현황이 빠듯해 보이면 일찍 출발하거나 대중교통을 고려할 수 있었습니다.
// application.properties에서 스케줄링 on/off 제어
app.scheduling.parking.enable=true
@Scheduled(fixedDelay = 30 * 60 * 1000)
@ConditionalOnProperty(value = "app.scheduling.parking.enable", havingValue = "true")
public void checkParking() {
List<ParkingInfo> info = parkingService.getRemains();
log.info("주차 현황: {}", info);
}
공공 API 이것저것 써보면서 느낀 점
이 프로젝트처럼 간단하게 공공 API를 붙여보는 게 의외로 재미있습니다. 버스 도착 API, 날씨 API, 미세먼지 API 등 생활에 밀접한 데이터들이 많이 공개돼 있어서 아이디어만 있으면 금방 만들 수 있습니다. 복잡한 비즈니스 로직 없이 API 연동과 데이터 파싱 연습을 하기에도 딱 좋습니다.
팁: 공공데이터포털에서 API를 신청하면 보통 즉시 또는 1~2일 내로 승인됩니다. 일일 트래픽 제한이 있지만 개인 프로젝트 수준에서는 넉넉합니다.