한국관광공사 Open API — 여행 MBTI에 진짜 데이터 연결하기

01 / 15
PEC · VIBE CODING · #2
한국 관광공사
Open API
내 여행 MBTI 앱에 진짜 데이터를 연결하기
BOAZ · 2026
02 앞서 만든 앱의 아쉬운 점
여행 MBTI 앱, 하나가 아쉬웠다
"실제 데이터가 아니다"
추천 여행지가 미리 박아둔 정적 데이터 → 이제 진짜 데이터로 채워봅시다
03 API 란?
API = Application Programming Interface
앱을
프로그래밍하는
인터페이스
직역하면 — 앱과 앱이 대화하는 방법
여행 MBTI 앱
한국 관광공사 앱
04 그 대화는 어떻게 생겼나? — 요청과 응답
대화 = 요청(Request) + 응답(Response)
나 (내 앱)
요청 "이거 줘"
상대 (관광공사)
응답 "데이터 줄게"
실제 예 — 주소(URL) 하나 보냈더니 → 관광지 정보가 JSON 으로 돌아옴
{ "items": [
    { "title": "경복궁", "addr1": "서울 종로구...", "mapx": 126.97, "mapy": 37.57 }
] }
05 한국 관광공사도 "앱"이 있다?
여기서 "앱"은 더 넓은 의미
핸드폰 앱
"서버" 도 앱
SERVER
서버 = 관광공사 데이터를 저장해 두다가, 요청이 오면 응답해주는 프로그램 → 서버도 일종의 앱
06 Open API ?
닫힌 API vs 열린 Open API
일반 API
서비스 안에서만 접근
바깥에서는 못 들어오게 닫혀 있음
OPEN API
어디서든 접근
누구나 쓰도록 열려 있음 — 단, 접근 권한을 신청해야 함
07 우리가 신청할 건 → KorService2
우리가 쓸 API = KorService2
한국관광공사 "국문 관광정보" OPEN API
  • 전국 관광지 · 맛집 · 숙소 · 축제 데이터
  • 키워드 / 지역으로 검색
  • 우리 MBTI 추천 카드를 이걸로 채운다
08 접근 권한 신청하러 가기
한국관광공사 사이트에서 단계별로 진행
[ 한국관광공사 / 공공데이터포털 사이트 라이브 시연 자리 ]
실제 MBTI 앱에 연결할 API(KorService2) 권한 신청까지
09 API 가 진짜 작동하는지 확인
먼저 — 호출 자체는 성공!
https://apis.data.go.kr/B551011/KorService2/searchKeyword2?serviceKey=발급키&keyword=경복궁&...
[ 주소창에 URL 입력 → 관광지 JSON 응답 시연 자리 ]
결론 — API 는 멀쩡히 잘 작동한다 · 응답 데이터 구조(사진 · 주소 · 좌표) 살펴보기
10 앱(브라우저)에 붙여보자 — 그런데??
HTML/JS 에서 fetch 로 호출 → 빨간 CORS 에러 😱
주소창 입력
그냥 페이지 이동
CORS 무관 ✅ — 그래서 9번에서 됐던 것
HTML 안 JS fetch
"다른 출처 직접 호출"
→ 브라우저가 차단
⇒ 호출이 실패한 게 아니라, "브라우저 직접 호출"만 막힌 것
11 왜 막히지? — CORS (브라우저의 보안 규칙)
CORS = 브라우저의 보안 규칙
내 사이트 → 다른 출처(apis.data.go.kr) 직접 요청
동일 출처 정책
브라우저가 막음
왜 막나?
사용자를 노린 악성 요청 차단
허락(CORS) 없으면 차단
공공데이터포털은 "와도 돼" 허락 안 함
12 "CORS 끄면 되잖아요?" — 꼼수가 답이 아닌 이유
CORS 끄기? — 답이 아니다
내 컴퓨터
CORS 끄면 잠깐 보임 ✅
내 화면에서만 통한다
사용자 브라우저
그대로 막힘
실서비스 불가 — 모두가 CORS 를 끌 순 없다
13 게다가 — 키를 프론트에 두면 노출된다
그리고 또 하나 — 키 노출
프론트 코드(HTML/JS)는 누구나 열어볼 수 있음 (F12)
키를 코드에 박으면
노출 → 남이 훔쳐 씀 → 한도 소진 / 계정 정지
키는 사용자 화면 쪽에 절대 두면 안 된다
14 진짜 해결책 = 중간에 "내 서버"(프록시)
진짜 해결책 = 내 서버 (프록시)
브라우저
내 서버
관광공사 서버
서버 ↔ 서버 = CORS 무관 ✅
키는 내 서버에만 숨김 ✅
근데 이 "내 서버"를 만들어 세상에 올리는 것 = 배포
15 오늘 정리 + 다음 편 예고
TODAY
API 개념
권한 신청
호출 성공 확인
CORS 벽
"내 서버" 필요
NEXT
내 서버 만들기 · 배포
To be continued —
16 확장 아이디어 ① — 안 막히는 여행 플래너
BONUS IDEA · API 조합
남들 몰릴 때 피해서 가는 여행
혼잡 예측 + 방문자 데이터로 "지금 한적한 곳"을 추천
TatsCnctrRateService
관광지 집중률 예측
향후 30일 혼잡 시점 파악
DataLabService
지역별 방문자수
현지인·외지인·외국인 추이
KorService2
추천지 실데이터
한적한 곳의 사진·주소 카드
"주말 강릉 혼잡(82%) → 수요일 양양" 식 — 다른 앱이 못 주는 정보
17 확장 아이디어 ② — 배리어프리 여행 동행
BONUS IDEA · API 조합
휠체어·고령자·아이와 갈 수 있는 곳
장애유형별 접근성 정보로 "안심하고 가는" 여행 지도
KorWithService2
무장애 상세정보
휠체어·점자블록·수유실·엘리베이터
KorService2
내 주변 관광정보
위치기반 목록 + 좌표
Odii
오디오 가이드
시각장애인용 음성 동선 안내
detailWithTour2는 어디에도 없는 데이터 — 사회적 가치 + 공공 사업화 가능
18 확장 아이디어 ③ — 반려견 동반 캠핑·여행
BONUS IDEA · API 조합
우리 강아지랑 같이 가는 코스
반려동물 동반 가능 장소 + 캠핑장을 묶어 코스로
KorPetTourService2
반려동물 동반여행
동반조건·구비시설 (detailPetTour2)
GoCamping
캠핑장 정보
애완동물 출입·글램핑·시설
KorService2
주변 보강
근처 음식점·쇼핑 카드
추가 신청 부담 가장 적고, 결제 전환 높은 반려인 시장
19 확장 아이디어 ④ — "듣는 둘레길"
BONUS IDEA · API 조합
걸으며 그 장소의 이야기를 듣다
코스를 따라가다 좌표 진입 시 오디오 해설 자동 재생
Durunubi
걷기·자전거길 코스
난이도·거리·GPX 경로
Odii
위치기반 오디오
음성·대본 (4개국어)
PhotoGallery / PhokoAwrd
감성 사진
구간별 사진·공모전 수상작
GPX 따라 걷는 LBS 경험 — 외국인 관광객(다국어)도 타겟
20 확장 아이디어 ⑤ — 데이터 기반 여행 디스커버리
BONUS IDEA · API 조합 · MBTI 앱 확장
빅데이터로 찾는 "지금 뜨는 동네"
연령·소비·SNS 트렌드를 엮은 여행지 큐레이션
AreaTarResDemService
여행유형별 SNS 언급량 (레포츠·힐링·미식·체험)
AreaTarDemDsService
관광 체류·소비 강도 (숙박 비중·외지인 소비)
TarRlteTarService1
선택지의 연관 관광지 추천 (최대 50위)
KorService2
최종 추천지의 실데이터 카드
MBTI 성향 → SNS 여행유형 매핑 — 지금 만든 앱과 가장 잘 붙는 확장
21 오늘 정리
오늘 정리
관광공사 OPEN API 활용법
다양한 Open API 활용 방법
  • Open API 옵션 자세히 살펴보는 법
  • API 신청하는 법
  • API 시험 호출까지
보안
발급받은 키는 노출 금지
  • 키는 서버에서 요청해야 함
  • 따라서 배포 필수
직접 배포는 여러분 각자의 방법으로 진행
← 목록으로