바이브코딩으로 만드는 진짜 웹서비스 - 한국관광공사 Open API 연결하기 2편
1편에서 만든 여행 MBTI 앱의 가짜 데이터를 한국관광공사 오픈 API의 진짜 데이터로 교체합니다. API 개념부터 27종 API 둘러보기, 인증키 발급, 첫 호출까지 따라갑니다. 마지막엔 인증키가 브라우저에 그대로 노출되는 보안 사고와 그 해결책을 다룹니다.
53:47 · 챕터 31개 · YouTube에서 보기
전체 대본
문장을 클릭하면 영상의 해당 시점으로 이동합니다.
여러분. 안녕하세요. 한국관광공사에서 제공하는 오픈 API를 연결하는 방법에 대해서 설명드리는 강의에 오신 여러분 환영합니다. 오늘은 제가 앞에 바이브 코딩 강의에 이어서 두 번째 시간으로 실제로 한국관광공사에서 제공하는 API에 어떻게 연결하는지, 그 연결 방법을 설명드릴 텐데요.
구체적으로 가이드를 드릴 거예요. 한 걸음 한 걸음 따라오실 수 있도록. 그런데 이 가이드를 드리기 전에 먼저 간략하게 개념을 좀 살펴보려고 해요. 왜 개념을 살펴보냐? 개념을 이해하시면 AI랑 이제 바이브 코딩도 진행하시고 앱을 만드는 것도 진행하시고 하실 텐데 그때 AI에게 더 구체적으로 제대로 잘 명령할 수 있기 때문이에요. 개념을 알아야지 많이. 만약에 개념을 모른다면 AI에게 명령할 수 있는 게 한계가 생겨요.
그래서 훨씬 더 한계를 극복해서 더 좋은 결과물을 만드시려면 개념을 반드시 아시는 것이 도움이 된다. 먼저 개념을 간략하게 좀 짚어드리고요. 그리고 나서 구체적으로 API를 연결하는 방법에 대해서 가이드를 드릴게요.
그러면 우리가 출발할 지점은요. 지난 시간에 바이브 코딩으로 함께 완성했던 여행 MBTI 앱입니다. 바로 이곳이 출발점이에요. 여기서 출발할 건데 한 가지 아쉬운 점이 남았었어요. 물론 저희가 마땅쪼로 기억나시죠? 마땅쪼로 계속 개선해 나가긴 했었어요. 그런데 한 가지 아쉬운 점이 남아있었어요. 그게 뭐냐면 실제 데이터가 아니다라는 점이에요.
어떤 부분이 실제 데이터가 아니었을까? 함께 지난 시간에 만들었던 앱을 보시죠. MBTI 앱이기 때문에 질문에 답변을 했었죠. 답변한 것을 토대로 당신의 여행 성향을 추천해 주는 마지막 페이지입니다. 마지막 결과 페이지인데 쭉 내려가서 보시게 되면 이 유형, 여행 유형에 맞춰서 추천 국내 여행지를 5개를 제안해 주고 있어요.
그런데 이 5개의 추천 국내 여행지 데이터를 살펴보면요. 이 데이터가 바로 저희가 직접 입력해 둔 데이터라는 거예요. 그 말은 한국관광공사 API에서 제공하는 데이터가 아닌 거죠. 즉 한국관광공사에서 제공하는 데이터가 아니라 우리가 임의로 넣어놓은 데이터라는 거예요.
그러니까 실제 데이터가 아닌 거죠. 여기서 말하는 실제는 한국관광공사 데이터요. 이 한국관광공사 데이터가 아니라 데이터가 아니라 우리가 임의로 넣어둔 정적인 고정적인 데이터라는 거예요. 그래서 이제 진짜 데이터, 실제 데이터, 즉 한국관광공사에서 제공하는 데이터로 교체해 볼 거예요.
그러려면 먼저 알아야 되는 개념이 있습니다.
그 개념이 바로 API입니다. API요. 이 API라는 것은 영어 단어의 약자인데 다 아실 필요 없습니다. 근데 크게 그냥 흐름만 잡고 가시면 돼요.
모든 영어 단어를 다 아실 필요 없어요. 어플리케이션 프로그래밍 인터페이스라는 건데요. 어플리케이션은 제가 쉽게 풀어드리겠습니다. 그냥 앱입니다.
앱을 프로그래밍하는 인터페이스다. 이게 무슨 얘기냐. 직역하면 좀 쉽게 풀어보면 앱이랑 앱이 서로 대화하는 방법이에요. 중요한 키워드가 대화인데요.
앱과 앱이 어떤 앱과 앱이냐. 우리가 바이브 코딩했던 여행 MBTI 앱이 있죠. 여행 MBTI 앱을 이미 만들었었죠. 그 앱이 하나고요.
또 다른 앱은 한국관광공사 앱이에요. 에잉? 한국관광공사에서도 앱을 만들었었나? 이 얘기 조금 이따 설명을 이어서 드려볼게요.
좀 더 자세히. 그 전에 먼저 우리가 살펴봐야 할 개념이 있어요. 그게 바로 앱과 앱이 대화한다는. 이 대화라는 게 도대체 뭔가.
뭘 대화한다는 건가. 에 대해서 먼저 좀 살펴봐야 해요. 그리고 나서 한국관광공사에서 만든 앱이 무엇인지까지 좀 이어서 살펴볼게요. 앱이라는 게 개념이 뭔지요.
먼저 대화가 무엇인지입니다. 대화는 요청하고 응답하는 것입니다. 무엇을 요청하느냐. 나, 내가 만든 여행 MBTI 앱이 있죠.
이 여행 MBTI 앱이 요청을 해요. 이거 줘. 이 데이터 줘. 라고 요청을 해요.
누구한테 하냐면 관광공사에서 만든 앱이요. 이 앱에다가 요청을 해요. 그러면 관광공사에서 만든 앱이 응답을 해요. 그래, 데이터 줄게.
하고 응답을 해요. 실제 예시를 조금 더 찾아서 보면은 주소를 하나 보내요. 그렇게 보냈더니 주소를 보고 관광공사 앱에서 관광지 정보, 데이터가 JSON이라는 형태로 돌아온다. 응답을 해준다.
이게 바로 요청과 응답으로 구성된 대화. 제가 말씀드렸던 거예요. 앱과 앱이 서로 대화하고 있죠. 이 대화하는 방법.
대화하는 방법에 대해서 설명해 주는 게 바로 API예요. 그렇게 이해하시면 돼요. 제가 개념을 설명드리는 이유를 다시 한번 강조드립니다. 개념을 머릿속에 어느 정도 넣고 계시면 AI를 활용해서 앞으로 바이브 코딩을 이어서 하실 텐데 그때 조금 더 정확하게 문제 상황이 생기더라도 혼자서 스스로 해결할 수 있는 상황으로 나아갈 수 있다.
그렇기 때문에 제가 개념을 설명드립니다. 그래서 대화를 합니다. 요청을 합니다. 응답을 합니다.
이게 바로 대화입니다. 그게 바로 방법 API입니다. API예요. 그래서 응답 형태가 이런 식으로 옵니다.
그러면 바로 이어서 관광공사에서 만든 앱이라는 게 도대체 무엇인가 그것에 대해서 조금 더 살펴볼게요. 제가 말씀드린 관광공사의 앱이라는 것은 조금 더 넓은 의미입니다.
단순히 핸드폰 안에서 우리가 실행하는 앱. 예를 들면 네이버 앱도 있고 정부24 그런 앱 있죠. 정부24. 이런 앱을 의미하는 게 아니에요.
이런 앱이 아니라 조금 더 넓게 서버라는 것도 포함했습니다. 서버는요. 일종의 앱이에요. 일종의 앱이라고 볼 수 있어요.
그렇기 때문에 이 서버라는 건요. 관광공사의 데이터를 저장해두다가 앞에서 말씀드린 것처럼 요청이 오게 되면 응답을 주는 프로그램을 앱이라고 불러요. 뭐 개념들이 많이 나오는데 전혀 어려우실 거 하나도 없습니다.
그냥 앱이라고 이해하시면 됩니다. 그게 뭔가 서버구나. 서버도 앱이라고 부르는구나. 같은 말이었네.
관광공사 앱. 즉 관광공사 서버를 의미하는 거네. 그러면 앱끼리 대화하는 거는 앱끼리 대화하는 거는 결국 서버를 말하는 거네. 라는 거를 이해하실 수 있을 거예요.
그렇기 때문에 이 서버가 관광공사에서 데이터를 저장해뒀다가 응답해주는 거죠. 이제 조금씩 그림이 더 선명해지죠. 아 내가 만든 앱이 있네. 근데 내가 요청을 보내네.
어디로 요청 보내냐? 관광공사의 서버로 보내는 거였네. 그 서버와 내가 만든 앱이 대화하는 방식이 바로 API. 대화하는 방법이 API라고 부르는 거였네.
라는 것까지 오셨으면 여러분 거의 다 오셨습니다. 하나만 더 짚고 넘어가겠습니다.
닫힌 API와 열린 API입니다. 닫힌 API는 보통 일반적으로 모두 다 닫혀있기 때문에 닫힌 API라는 표현을 사용했는데 이게 뭐냐면 특정 서비스 안에서만 접근할 수 있는 API입니다. 즉, 바깥에서 아무데서나 다 요청을 보낼 수는 없습니다. 바깥에서는 못 들어오고 닫혀있기 때문에 그 안에서 특정 서비스 안에서만 요청을 할 수 있는 거죠.
예를 들어서 정부24도 마찬가지입니다. 물론 그 안에 공개된 API가 있다면 우리가 요청을 보낼 수 있겠지만 서류를 발급하거나 하는 부분들에 대해서 동작하기 위해서는 정부24 내부에 닫힌 API를 사용해서 클로스드 API로 요청을 보내고 응답을 하는 이런 대화의 과정이 진행됩니다. 그런데 반면에 열린, 즉 오픈 API의 경우는 다릅니다. 어디서나 접근이 가능합니다.
가능해요. 이게 가능해져요. 누구나 쓰도록 열려있기 때문이에요. 그러니까 서비스 안에서만 쓰는 게 아닙니다.
밖에서 어디서든지 요청해서 쓸 수 있습니다. 그게 바로 오픈 API입니다. 대신 그렇게 되면 아무나 막 부르면 남용 혹은 오용 에 문제가 생길 수 있잖아요. 그래서 이런 문제를 막기 위해서 예방하기 위해서 접근 권한을 신청해야 합니다.
그래서 접근 권한을 신청하는 것입니다. 우리가 한국관광공사의 API를 사용해서 동작하는 앱을 만들려면 이 API는 오픈 API이기 때문에 어디서든 접근이 가능하지만 남용하거나 오용하는 것을 막기 위해서 접근 권한을 신청해야 한다.
라고 이해하시면 됩니다. 여기까지 오셨으면 이제 준비는 끝났습니다. 우리가 첫 번째로 써볼 예시 API입니다. KorService2라는 API인데 한국의 여기 관광 정보를 알려주는 응답하는 API입니다.
한국 이름은 국문관광정보 라고 되어 있습니다. 전국의 관광지, 맛집, 숙소, 축제 데이터들을 전부 담고 있는 아주 커 대한 API입니다. 그래서 키워드나 지역으로 검색할 수 있고요. 우리 MBTI 추천 카드를 이제 이걸로 채워 볼 겁니다.
결과를 냈을 때 결과를 토대로 이걸로 채워 보는 실습을 따라서 해볼 겁니다. 그러면 이제 한국관광공사 API를 쓰려면 가장 먼저 어떤 걸 해야 한다고 말씀드렸나요? 그렇죠! 권한 신청입니다.
권한 신청을 하셔야 됩니다. 권한 신청! 저랑 같이 단계별로 차근차근 진행해 볼 거예요. 저만 따라오시면 됩니다.
먼저 인터넷 URL 창에서 입력하실 때 HTTPS를 입력하신 후에 제가 보여드리는 것처럼 api.visitkorea.or.kr 이라고 입력하신 후에요. 그리고 슬래시 하시고 샵 하시고 슬래시 하시고 use util exercises 물론 대소문자 구분 잘 하시면 중요합니다. util 유 exercises 이 이 두 가지는 대문자고요. 나머지는 다 소문자입니다.
use util exercises 까지 입력하신 다음에 엔터 치시면 저와 동일한 페이지가 보여집니다. 제가 이렇게 보여드리는 이유는 여러분도 아마 안내 받으셨을 거예요. 한국관광공사에서 제공하는 오픈 API 목록 페이지로 한 번에 접속할 수 있는 주소이기 때문입니다.
그래서 쭉 보시면 총 27건이 있습니다. 잠깐 저희가 실제로 사용할 API에 바로 접속해서 권한 신청하기 전에 어떤 API들이 있는지 먼저 살펴보겠습니다. 한국관광공사 지역별 관광자원 수요가 있습니다. 그래서 어떤 관광자원 수요가 있는지 이런 거 제공합니다.
혹시 만약에 지금 제가 소개해드리는 각각 API에 대한 설명이 필요 없으시다면 건너뛰고 싶으시다면 아니면 이미 내가 봐서 잘 알고 있다면 강의를 조금 뒤로 넘겨서 바로 실제로 실습하시는 부분으로 넘어가셔도 좋습니다.
지금은 잠깐 각각의 API를 하나하나 먼저 소개해드리겠습니다. 방금 소개해드렸던 것처럼 지역별 관광자원 수요 API입니다. 이것은 관광자원 수요 정보를 제공하는데 관광서비스 수요 문화자원 수요 등의 지표로 구성되어 있습니다.
그리고 관광공사 지역별 관광수요 강도입니다. 이것은 관광수요가 얼마나 센지 말 그대로 관광수요죠. 그 강도죠. 그래서 관광수요 지수 중에 하나로 관광체류강도 관광소비강도 등의 지표로 구성되어 있는 그러한 API입니다.
총 27개여서 하나씩 가볍게 살펴볼 계획입니다. 한국관광공사에서 지역별 관광 다양성에 관련된 API도 있습니다. 관광 소비 다양성 국제적 다양성 관광객 다양성 등의 데이터를 줍니다. 관광 공모전 사진에 대한 수상작 정보도 줍니다.
이런 것들은 이미지 데이터를 활용하기 좋겠죠. 이미지에서 가져다가 조합해서 쓸 수 있습니다. 특정 관광지에 대해서 관광 공모전에 대해서 사진 수상을 받은 사진을 보여주는 방식으로 활용할 수 있겠죠. 웰니스 관광 정보에 대한 API도 있습니다.
지역기반 위치기반 등에 대해서 국내 웰니스 라는 특정 도메인이죠. 특정 주제죠. 이 특정 주제를 가지고 데이터를 제공하는 API도 있습니다. 마찬가지 또 다른 주제 API입니다.
의료 관광 정보 국내 의료 관광에 대해서 특히나 병원 쪽 관광 오시는 분들 많을 텐데 외국에서요. 그럴 때 그 국내 의료 관광 정보를 제공하는 API입니다. 반려동물 동반여행 서비스 API도 있습니다. 관광지 문화시설 축제 공연 행사 숙박 음식점 이런 것들에 대한 관광 정보를 제공하는 API입니다.
그리고 관광지 별 연관 관광지 정보 API도 있습니다. 기초 지자체 중심 관광지 정보 이것은 이제 전체적으로 기초 지자체를 중심으로 1등부터 100등까지의 관광지 정보를 한 번에 알려주는 겁니다. 이런 것은 순위를 알려주는 서비스로 좀 좋을 것 같아요. 그래서 추천 관광지에서 이런 API를 사용해도 충분히 가능하겠네요.
그리고 한국관광 데이터랩에 지역별 관광지 별 조회일 기준 향후 30일에 관광객 집중적으로 방문한 그 추위 예측 정보입니다. 이것은 데이터 랩에서 추측하는 것이기 때문에 확정적인 과거 데이터가 아니라 미래의 예측을 추측해서 제공하는 정보 데이터 인 것 같습니다. 이런 API들이 있습니다. 이렇게 해서 쭉 3페이지까지 여러 가지 API들이 있습니다.
간략하게 이 페이지 조금 더 살펴보겠습니다. 관광인 채용정보 서비스입니다. 이 관광인 채용정보 서비스를 사용하면 이것도 또 다른 주제 데이터 API잖아요. 그래서 이걸 주제로 서비스를 만들 수 있겠다라는 감이 좀 잡히실 겁니다.
하나씩 제가 살펴보는 이유가 여러분들이 이제 실제로 서비스를 개발하셔야 할 텐데요. 그때 어떤 API들이 어떤 정보를 제공하는지를 미리 좀 살펴보시면 여러분들이 푸시고자 하는 문제를 풀 때 적합한 API가 무엇인지 파악하실 수 있을 것 그래서 두루누비 정보 서비스 이어갑니다. 두루누비라고 해서 종합정보 제공하는 길정보 코스정보들 코스정보 이런 게 이제 걷기나 자전거 레저여행 하시는 분들한테는 굉장히 중요하고 필요한 정보가 되겠죠.
이런 특정 도메인 특정 주제를 가지고 제공하는 데이터 API들이 있습니다. 또한 빅데이터 지역별 방문자 수입니다. 이동통신 신용카드 내비게이션 이런 다양한 큰 데이터 빅데이터를 활용해서 한국관광 데이터 랩에서 광역 기초 지자체별 방문자 수 정보 등을 제공하는 API입니다. 방문자 수가 얼마인지요.
그리고 또 재밌는 API가 있는데 오디오 가이드 정보가 있습니다. 오디 라는 서비스가 있는데요. 이 오디 서비스에서 음성 대본 사진 정보들을 제공해줘요. 이런 걸 통해서 스토리라인을 가지고 있는 영상을 지역별로 만들어 뒀다가 영상 컨텐츠를 제공해주는 그런 서비스도 재밌을 것 같습니다.
제가 정말 대략적으로 다양한 서비스에 대한 아이디어를 드리고 있는데 이런 것들은 전부다 이 API 기반으로 제가 1차적으로 정말 얕게 생각한 것이니까요. 실제로 공모전에 참가하신 여러분들은 훨씬 더 좋은 아이디어를 가지고 공모전에 참가하셨으리라 생각이 듭니다. 대략적인 API 사용 어떤 것들이 추가로 있는지 사용하기 전에 좀 살펴보시죠.
고캠핑 정보 조회 서비스 입니다. 캠핑장 정보들이 있습니다. 캠퍼들한테 또 유용한 서비스를 제공할 수 있겠죠. 그리고 관광 사진 정보가 있습니다.
굉장히 다양한 관광 사진 갤러리 콘텐츠가 있어요. 사진 제목 촬영 장소 이런 것들이 있는데 이런 것들 제공 해주고요. 그리고 무장애 여행 정보 이것은 말씀드린 것처럼 장애인 어르신 영유아 이런 분들이 이제 겪기 어려운 상황일 텐데 그런 것들을 겪기 어려운 상황을 해소해 줄 수 있는 여행 정보를 제공하는 API 같습니다. 마찬가지 특정 주제에 관한 것이죠.
그리고 노어 관련된 관광 정보 서비스도 제공해 줍니다. 그래서 통합 상세 검색 기능 등 제고 전반적으로 노어로 제공해 줍니다. 그리고 서어도 있습니다. 이제 언어별로 나누어지는데요.
API 한국관광공사에서 크게는 관광 정보 서비스를 제공해 줄 텐데 그때 노어 서 이렇게 언어별로 제공해 준다 라는 것은 우리가 국제화 시대에 국제화의 앱 서비스 우리가 제공할 서비스에 국제화 다양한 언어를 제공할 수 있겠구나 라는 힌트를 얻을 수 있습니다. 불어도 있습니다. 독어도 있습니다.
일어도 있습니다. 또한 중문에 대해서도 중국어도 제공합니다. 영문 당연히 제공하고요.
마지막으로 우리가 가장 많이 쓰게 될 API 가 아닌가 싶습니다. 오늘 실습 또 이 API 로 할 건데요. 바로 국문 관광 정보 서비스 API 입니다. 이 국문 관광 정보 서비스 API 는 정말 통합 적으로 모든 관광 정보 데이터를 제공 한다라고 이해하시면 됩니다.
이러한 국문 관광 정보 서비스 에 대해서 활용 법을 자세히 알아보려고 합니다. 저는 국문 관광 정보 서비스를 활용 하지만 여러분들은 만약 다른 서비스를 활용 하신다 한다면 그 서비스 에 대해서 지금 제가 알려드리는 서비스 활용 법을 공부 하는 방법을 그대로 적용 하셔서 그 서비스 에 대해서 어떻게 활용 하는 국문 관광 정보 서비스 예시로 살펴볼게요. 여기 공공 데이터 포털 활용 신청 버튼을 누르게 되면 공공 데이터 포털 페이지로 이동해서 국문 관광 정보 서비스 API 모음 서비스 페이지로 이동 하게 됩니다.
그러면 먼저 간단한 설명이 써있어요. 국내 관광 정보 서비스 오픈 API 신규 상세 기능 안내 하면서 URL 이 나와있고요. 그리고 어떤 서비스인지 한국관광 공사가 보유하고 있는 전국의 다양한 관광 정보와 사진 정보를 실시간으로 제공하는 서비스 다 하면서 26만 건 하는 자세한 설명이 나와있습니다.
한번 읽어보시면 앞에서 저희가 살펴봤던 것처럼 각각의 API 가 이런 역할을 하는구나 API 용도 에 대해서 좀 더 자세히 알 수 있습니다. 그리고 그다음 저희가 볼 것은 이따가 저희가 예시를 다 보고 나서 활용신청을 하는 방법에 대해서는 따로 설명을 드릴 거예요. 지금은 이 API 서비스 국문 관광 정보 서비스가 어떻게 어떤 역할을 하는지 어떻게 활용하면 좋을지 에 대해서 자세히 알아보는 방법을 알려드리는 겁니다.
다시 한번 말씀드리지만 만약에 공모전 참가자 분들께서 다른 관광 정보 서비스 다른 서비스를 이용해서 앱을 개발하시거나 웹을 개발하신 다면 이 활용 방법을 공부하는 이 방법을 그대로 적용하셔서 여러분들이 이용하실 활용하실 서비스를 공부하시면 됩니다.
그렇게 해서 자세히 쓰시면 돼요. 간단히 살펴보면 오픈 API 정보라고 해서 저희는 지금 계속해서 이 한국관광 공사에서 제공하는 국문 서비스를 공부하고 있는 거죠. 그래서 API 유형이 레스트 구나 등록일은 이렇구나 무료 구나 개발 계정은 보통 천 건 까지 그리고 운영 계정은 그것보다 더 많은 트래픽 요청 수를 감당할 수 있구나 데이터 포맷은 JSON 이구나 플러스 XML 이구나 이렇게 되는 것을 간략하게 살펴볼 수 있어요.
그리고 나서 실제적으로 호출을 하는 방법 호출을 했을 때 어떤 옵션들이 있는지 이런 것에 대해서 좀 더 자세히 알아보시려면 여기 정말 자세한 문서는 개방 데이터 활용 매뉴얼 국문 이라는 게 있습니다. 한번 다운로드 해서 받아보면요 이렇게 열어보면 제가 보여드릴게요. 열어보면 이 안에 이 다운받은 폴더 안에 닥스 파일이 있어요.
그러면 활용 신청 방법 매뉴얼 그리고 한번 열어서 자세히 볼게요. 어떻게 활용을 신청 하는지 제가 이 공영상 강의로도 설명드리지만 그거 말고도 문서로도 굉장히 자세히 잘 안내가 되어 있어요. 그래서 이 국문에 대한 투월 API 4.0 버전 어떻게 쓴다 하는 것 자세히 안내가 되어 있습니다.
그래서 쭉 보시면서 인증키 이런 거 제가 설명드리겠지만 문서가 편하신 분들은 이렇게도 확인하실 수 있다. 그리고 활용 매뉴얼 국문 이거는 신청 방법이 아니라 활용 매뉴얼 이죠. 그래서 어떻게 활용하면 좋다 하는 매뉴얼 에 대한 설명 이에요.
이런 부분들이 다 잘 써 있습니다. 문서로 잘 정리 가 되어 있죠. 그래서 이런 것도 활용 하셔서 충분히 가이드를 받으실 수 있습니다.
또한 관광 타입 정보에 연계 정의서는 엑셀 파일 인데요. 엑셀 파일 보시면 어떤 옵션을 주고 호출 하면 되는지 어떤 정보들을 부를 수 있는지 대분류 중분류 소분류 관광 타입 까지 해서 굉장히 자세하게 안내들이 나와 있어요. 그런데 이거 사람이 또 다 보기 하는 부분들에 대해서 정리해서 알려주면 됩니다.
그래서 쭉 보시면 타입이 다 나뉘어져 있죠. 굉장히 자세한데 모든 걸 한 번에 다 미리 공부할 수는 없으니 지금 저와 함께 해보는 것은 이 국문 관광정보 서비스 API들을 호출해볼 거예요.
그래서 어떻게 호출할 수 있느냐 여기 보면 호출 이 오픈 API 명세 확인 가이드라는 것을 살펴보면 호출 방법이 또 자세히 나와 있습니다. 보시면 이미지로 8장 정도 있는데 처음에 API 호출 URL 주소 생성 부터 해서 그리고 호출된 주소가 어떤 의미인지 베이스 URL 통신 프로토콜 메소드 get 인거죠. HTTP 메소드 API 주소 엔드 포인트 이런 것들이 다 적혀 있습니다.
자세하게 그리고 파라미터 가 있어요. 파라미터 잘 아시는 것처럼 옵션 값이죠. 어떤 옵션을 주면 페이지 몇 번째 페이지 다 한 페이지 당 몇 개 자료가 필요하다
리슨 타입을 어떻게 주면 좋겠다 하는 옵션들이 있어요. 그게 파라미터 정의인데 파라미터인데 그 정의에 대해 설명을 하고 있어요. 그리고 API를 호출했을 때 응답하는 값에 대한 설명도 나와 있습니다.
5번부터는 Swagger라는 것은 여기 그냥 구현해놓은 도구 이름이에요. 그래서 Swagger 기반 어떻게 호출하는지 5, 6, 7, 8 페이지 호출 방법 나와 있는데 제가 이걸 빨리 본 이유는 저랑 같이 한번 해볼 거예요. 그래서 지금 보시는 것처럼 API가 하나의 국문관광정보 서비스 안에 여러 개 들어있어요. areaCode2 detailPetTour2 이렇게 해서 쭉 API들이 여러 개 있어요.
보통 서비스들마다 API가 여러 개 있을 겁니다.
그래서 여러분이 개발하실 웹이나 앱에 사용할 이 서비스 한국관광공사에서 제공하는 서비스 안에는 여러 개 API가 들어있을 수 있어요. 저는 예시로 맨 처음에 있는 이 국문관광공사 정보서비스에 맨 처음에 있는 areaCode2 지역코드 조회라는 API를 한번 호출해볼게요. API 한번 클릭해보겠습니다. 그러면 이제 areaCode2 라는 API에 대해서 설명 이 파라미터 값들 어떤 거 넣을 수 있는지 곧 바로 호출할 수 있는 창이 열려요.
이때 Open API 실행 준비라는 버튼을 눌러보겠습니다. 그러면 취소로 바뀌는 걸 확인하실 수 있죠. 다시 취소 누르면 입력이 안됩니다. 입력이 안되는 상황에서 실행 준비를 누르면 입력이 되는 거예요.
취소 누르면 입력이 안되죠. 실행 준비 누르면 입력이 돼요. 그래서 한 페이지 결과수 이런 것들을 입력할 수 있는데요. 중요한 포인트는 Required 라고 되어 있는 빨간색 항목은 반드시 입력해야 하는 항목입니다.
나머지는 입력하지 않아도 동작은 해요. 그런데 이제 내가 원하는 값을 넣어주면 더 정확한 내가 원하는 응답을 받을 수 있겠죠. 먼저 우리는 Required만 입력해서 동작하는지 살펴볼 거예요. 이때 MobileOS 라고 해서 OS 구분은 iOS and Web etc 안드죠.
이 중에서 하나의 값만 넣어야 해요. 저는 웹을 이미 로 넣어볼게요. 그리고 서비스명은 아직 정해진 게 없으니 이미 로 테스트라고 넣어보겠습니다. 여러분들께서는 여러분들이 만드시는 서비스명을 넣어주시는 게 제일 좋겠죠.
그리고 나머지는 보시는 것처럼 필수값이 아니기 때문에 우선은 빈값으로 요청해보겠습니다. 그런데 필수값이 하나가 더 있어요. 서비스 키라는 값이 있어요. 인증키죠.
이 값은 지금 여러분들은 없어요. 언제 생기냐 올라가셔서 이따가 저와 함께 해보겠지만
이 활용신청 버튼을 통해서 실제로 이 서비스를 활용신청하신 후에 승인을 받고 나서 ! 그 다음 인증키가 주어지는 것입니다. 저는 이미 인증키를 받아 두었어요. 나중에 또 실습하겠지만 그래서 받아 둔 것은 마이페이지 누르면 확인이 가능합니다.
마이페이지 누르면 확인이 가능해서 보시는 것처럼 인증키가 있죠. 인증키 복사를 한번 해서 나중에 활용신청 조금 있다가 뒤에 동영상에 나옵니다. 활용신청하셔서 인증키 받으시면 그걸 그대로 활용하시면 돼요. 그래서 인증키 복사하신 후에 여기 인증키 붙여 넣어보겠습니다.
그리고 나서 오픈 API 호출을 한번 눌러볼게요. 누르면 바로 이 인터넷 상에서 호출이 됩니다. 그런데 잘 보시면 호출이 돼서 응답받은 결과를 보면 정상적으로 잘 응답이 된 걸 확인하실 수 있어요. 서울 인천 대전 이렇게 지역코드가 잘 왔죠.
성공적으로 잘 호출된 거예요. 어려운 게 하나도 없으시죠. 그런데 만약에 제가 일부러 인증키를 한번 틀려볼게요.
왜 그러냐면 어떻게 응답보는지 보여드리려고 하는 거예요. 인증키 틀려서 호출 다시 한번 해볼게요. 호출 다시 한번 하게 되면 확인하실 수 있죠. 401 에러 그리고 리스폰스 바디라는 곳에 Unauthorized라는 게 옵니다.
이 Unauthorized라는 게 무슨 의미냐 이 에러 코드가 뭔가 왔는데 이 에러 코드가 무슨 의미냐 확인하시기 위해서 이 에러 코드 종류로 확인하시려면 쭉 올라가셔서 여기에서 오픈 API 에러 코드라는 버튼이 있습니다. 오픈 API 정보 옆에 있죠. 이 에러 코드 버튼을 눌러보겠습니다. 그러면 우리가 방금 확인했던 Unauthorized 에러 메시지가 있어요.
Unauthorized 에러 메시지 뜻이 무엇이냐 API 인증키가 존재하지 않거나 유효하지 않습니다. 그렇죠. 왜냐하면 제가 받은 인증키에서 일부러 틀리게 수정했죠. 그리고 나서 요청했죠.
그러니까 그 인증키가 유효하지 않다라는 응답을 보내준 거예요. API 키가 잘못됐다는 거죠. 그래서 Unauthorized 에러 코드를 받을 수 있습니다.
그 외에도 Forbidden, API Not Found 등등등 특히 API Rate Limit Exceeded 즉 Rate Limit 한도 초과인 거죠. 요청을 한도가 정해져 있는데 그 요청 한도를 초과해버렸어요. 그래서 동시 요청수 초과했다. 이런 에러 메시지들에 대한 설명이 잘 적혀 있습니다.
그래서 에러 메시지 받으셨을 때 이 에러 메시지가 원인이 뭐구나 설명을 읽으시고 고치시면 됩니다. 오픈 API 에러 코드 버튼에서 확인할 수 있습니다. 에러 코드들을 설명까지요. 그리고 나서 마지막으로 한 가지만 짚으면 좋을 것 같습니다.
추천 데이터 탭입니다. 추천 데이터 탭을 보시면 추천 데이터 탭 볼게요. 그러면 지금 우리가 호출하고 있는 국문 관광정보 서비스에서 연관된 다른 데이터들이 무엇이 있는지 설명을 해줍니다. 그래서 아 이런 데이터들이 있구나 오픈 API는 또 다른 걸 호출할 수 있구나 라는 걸 확인하실 수 있어요.
그래서 API 이 서비스들을 다양하게 신청하셔서 활용하시면 활용하시면 훨씬 더 풍성한 기능을 앱 안에 담으실 수 있을 겁니다.
여기까지 한국 국문 관광정보 서비스를 예시로 살펴보았는데 제가 설명드린 것처럼 이것은 제가 앞으로 진행할 실습에서 사용할 서비스이기 때문에 이걸 자세히 알아보는 방법을 설명해 드린 거고요. 만약에 여러분들께서 아 나는 뭐 불어 관광정보 서비스 볼 거야 아니면 전혀 다르게 웰니스 관광정보 서비스 볼 거야 하면 동일합니다. 클릭하셔서 들어가셔서 여기 설명 있고 오픈 API 에러 코드 있고 이 아래 호출하는 거 API들 모음이 있습니다.
똑같이 활용법 잘 공부하셔서 활용하셔서 서비스 만드시면 됩니다. 그러면 이제 두 가지 정도 이 API들을 활용해서 어떤 서비스를 만들 수 있을지 아이디어를 간략하게 한번 설명해 드리겠습니다. 제가 API를 하나씩 하나씩 다 살펴봤잖아요. 그 이유가 있어요.
각각의 API를 조합해서 특별한 서비스들을 만들 수 있습니다. 이제부터 제가 드리는 이야기들은 사실은 여러분들이 훨씬 더 좋은 아이디어를 가지고 계시겠죠. 공모전 참가자분들이시니까요.
그런데 제가 예시로 이런 API들을 조합해서 어떤 서비스를 만들 수 있는지 예시로 가볍게 살펴보는 것입니다. 가장 먼저 남들 몰릴 때 피해서 가는 여행 정보를 주는 앱입니다. 그래서 혼잡 예측을 하고요. 방문자 데이터로 지금 한적한 곳을 추천해주는 그런 앱을 만들 수 있어요.
먼저 TATSCNCTRRATE 서비스라는 API를 활용하게 되면 이 관광지의 집중률을 예측하는 미래 향후 30일 혼잡지적 파악하는 그 API 있었던 거 기억나시죠? 이 API와 데이터랩 서비스 즉 지역별 방문자 수를 추측하는 API 그리고 추천지 실 데이터 KorService2 이 API 세 가지 API를 조합하게 되면 현지인 외지인 외국인 추위 지금 방문자가 얼마인지를 추측할 수 있고요. 정확한 추측해서 현재 이만큼인데 앞으로는 방문자 수가 얼만큼 되겠다라는 걸 추측해서 한적한 곳에 사진이나 주소 등의 카드 데이터를 보여주는 추천해주는 나 이때 여행 갈 거야 그런데 이때 사람들은 얼마나 몰릴까 하는
한적한 곳을 추천해주는 그런 앱을 만들 수 있겠죠. 남들 몰릴 때 피해서 가는 여행 에 대한 서비스 데이터를 제공해주는 앱을 만들 수 있다. 하는 예시 아이디어 하나 드립니다. 그래서 이렇게 조합해서 쓸 수 있겠구나 하는 감을 좀 얻으실 수 있도록
그리고 휠체어 고령자 아이들 그런 사람들과 같이 갈 수 있는 그런 관광지 정보 제공 앱입니다. KorWithService 라고 해서 무장애 상세정보 데이터 제공해주는 API 기억나시죠? 이 API 보시면 휠체어 점자 블록 수유실 엘리베이터 이런 관련된 정보들을 제공해줘요. 그러면 우리가 이 API를 활용할 거고요.
또 기본적으로 KorService2 이 API는 웬만하면 다 들어가는 것 같아요. 기본적인 내 주변 관광정보데이터니까요. 이 API 활용해서 위치기반 목록과 좌표를 줍니다. 그리고 OD 라는 API도 있습니다.
오디오 가이드 기억나시죠? 이것은 시각장애인용 음성동선을 안내해 줄 수 있지 않을까 하는 이런 아이디어 조합해서 보시는 것처럼 휠체어 고령자 아이들과 같이 갈 수 있는 곳에 대한 정보를 제공해주는 장애 유형별로 접근성 정보를 모두 제공해서 안심하고 약자들과 같이 갈 수 있는 곳에 대한 정보를 주는 앱을 만들 수 있지 않을까 마치 사회적 가치를 제공해주는 앱이죠.
이런 아이디어도 있을 수 있습니다. 벌써 두 번째 끝났습니다. 우리가 이어서 살펴볼 실습에서는 이 국문 관광정보 서비스를 신청해서 진행할 겁니다. 만약에 못 찾으시겠다면 여기에서 국문 이라고 검색하시면 바로 찾으실 수 있습니다.
공공 데이터 포털 활용신청 진행해보겠습니다. 클릭하시면 데이터.go.kr 로 이동이 되고 활용신청 버튼이 보입니다. 여기서 활용신청 버튼을 누르게 되면요. 로그인이 필요한 서비스입니다.
라고 나와서 로그인 페이지로 이동하게 되는데요. 로그인 페이지로 이동했을 때 저는 아직 가입을 일부러 하지 않았습니다. 그래서 여러분과 함께 가입하려고 네이버 로그인 눌러보겠습니다. 그러면 간편 로그인 회원가입 나왔는데 저는 네이버 로그인 했지만 카카오 로그인 하셔도 됩니다.
실제로 직접 가입하셔도 됩니다. 이메일로 전혀 상관없습니다. 그래서 공공 데이터 포털 서비스 이용약관 쭉 있어서 전체 약관에 동의하고 다음 단계로 넘어가겠습니다. 그러면 제 이름과 이메일이 있는 여기에서 아직 회원가입을 하지 않으신 분들은 진행하시면 됩니다.
끝까지 진행하신 후에 저는 이미 회원가입을 했기 때문에 로그인 정보로 다시 넘어가겠습니다. 로그인을 하고 돌아오셨다면 저를 따라서 활용 신청 버튼을 다시 한번 누르겠습니다. 그렇게 되면 이미 로그인을 하신 분들은 저처럼 개발 계정 신청 페이지가 보이실 겁니다. 이때 크게는 한국관광공사 국문관광정보서비스 API의 특징들을 읽을 수 있습니다.
제가 자세하게 설명드릴 건 아니고 활용 목적에 대해서는 한국관광공사 API 활용 서비스 개발 정도로 쓰시면 됩니다. 조금 더 자세하게 쓰실 분들은 입력하셔도 되고요. 대신에 웹사이트인지 앱인지 특징에 따라서 지금 여러분들이 공모전에 참가하실 때 만드는 서비스의 특징에 따라서 선택해 주시면 되고요. 그리고 나서 1000파일 있으시면 첨부하시면 되고 상세 기능 정보는 기본적으로 다 선택이 되어 있어요.
그래서 이대로 시작하시면 되고요. 이용 허락 범위 제한 없음에 동의합니다. 하시고 체크하신 후에 활용시청하시면 되는데 이때 주의하실 점은 보시는 것처럼 일일 트래픽이라고 해서 API당 1000번의 요청이 가능하다 라는 점을 기억하셔야 됩니다.
나중에 이 1000번 요청이 실제 서비스로 가면 부족할 수 있잖아요. 그러면 1000번을 확대하는 신청을 추가로 할 수 있습니다. 신청하시겠습니다. 버튼 누르면 그러면 저랑 동일하게 완전 진행하는 거예요.
그래서 지금 실제로 신청이 진행돼서 처리까지 다 된 걸 보실 수 있어요. 활용이 이제 신청이 됐고요. 그러면 승인된 것이 한국관광공사 국문관광정보서비스 이 API가 지금 승인된 걸 확인하실 수 있어요. 활용신청이 완료된 거죠.
저처럼 이렇게 똑같이 신청하시면 됩니다. 다른 API들이 필요하다 하면 아까 전에 저희가 27건의 API들을 확인했는데 모두 동일합니다. 똑같이 진행하셔서 필요한 API를 활용신청 누르신 다음에 여기에서 입력하신 후에 동의합니다. 누르시고 활용신청 누르시면 마지막 결과 페이지처럼 API가 이제 활용이 가능해진 것입니다.
왜 그런지는 제가 앞서 설명드렸습니다. 그것은 권한신청을 따로 받는 이유죠. 왜냐하면 오용과 남용을 방지하기 위해서 왜냐하면 이것이 오픈 API이기 때문이죠. 이렇게 되면 준비가 끝났습니다.
자세한 API에 대한 사용방법을 확인하기 위해서 활용신청된 이 API를 눌러보겠습니다. 누르면 해당 API 설명 페이지로 이동하게 됩니다. 내려가서 보시면 쭉 설명들이 있고요. 엔드포인트라는 것이 중요합니다.
이 엔드포인트와 그리고 또한 일반 인증키라는 부분이 중요합니다.
제 것을 임의로 테스트로 노출을 했지만 여러분들 것은 이 인증키가 절대로 노출되면 안됩니다. 저는 지금 공모전에 참가하고 있는 사람은 아니기 때문에 괜찮지만요. 그래서 이 일반 인증키가 왜 중요하냐 적용돼 이 인증키가 노출된다 라는 것은 이 키는 바로 권한 신청 자격을 의미합니다.
그래서 이게 노출되버리면 다른 사람도 마치 나처럼 이 요청을 하게 되버리는 것입니다. 문제가 되기 때문에 인증키는 절대 노출되면 안되고요. 엔드포인트 알고 계셔야 하고요. 이거 두 가지만 있으면 기본적으로 준비는 끝난 것입니다.
그래서 뭐 확인해보면 자세하게 어떻게 된다 이런 것들 쭉 볼 수 있는데요. 이런 것들 보다 여기 보시면 미리 보기 눌러보면 지금은 Unauthorized라고 나오죠.
그 이유는 보시는 것처럼 여기에서 인증키가 입력된 상태가 아니기 때문입니다. 샘플 데이터라서 그래서 인증키를 지워주시고요.
위에 올라가셔서 올라가셔서 보시면 일반인증키 이 부분을 복사해서 그대로 붙여넣겠습니다. 붙여넣은 후에 다시 한번 미리 보기를 눌러보겠습니다. 그러면 답변이 주의해야 할 지점이 있습니다. 이게 이제 신청하신 국문관광정보서비스 API인데요.
저희가 신청을 방금 진행했기 때문에 인증키로 여기에서 특정 API 예를 들면 미리 보기 확인해서 이 미리 보기 API로 데이터를 받으려고 해도 동작을 안 할 수 있어요. 괜찮습니다. 동작 안 할 수 있고 그것이 잘못된 게 아닙니다. 시간이 신청한 후에 30분은 지나야 합니다.
30분 정도 여유를 두시고 30분 후에 다시 시도해보세요. 저처럼 시도해보시면 되는데 뭐냐 하면 인증키 이 내용을 복사하신 후에요. 그대로 쭉 내려가셔서 여기에 중간에 서비스키라고 해서 인증키 부분이 있습니다. 이 부분을 지우시고 이 자리에 복사하셨던 내용 인증키 값을 붙여넣어 주신다면 준비 끝입니다.
그리고 나서 미리 보기 버튼을 눌러볼게요. 누르면 이렇게 요청이 제대로 응답한 것을 볼 수 있습니다. 우리가 요청했던 것은 위에서 보신 것처럼 위치 기반 관광 정보 조회입니다. 그래서 특정 위치 값을 맵 X, 맵 Y로 넣었고요.
그 넣었던 값을 토대로 위치 기반 관광 정보 조회를 요청했죠. 그랬더니 10개 결과를 달라고 했기 때문에 그 10개 에 대한 결과가 서울특별시 중구 서서물로 11길부터 쭉 10개 결과값이 온 걸 확인하실 수 있죠. 제대로 잘 왔습니다. 이게 한국관광공사에서 저희가 신청한 API를 제대로 잘 인증키를 적용해서 호출할 수 있다
까지 확인한 것입니다.
정리하겠습니다. 호출 자체는 성공했습니다. 순서를 보면 앞에서 말씀드렸죠. API가 있는데 이 API가 OpenAPI가 있다
라고 말씀드렸고요. 제가 요청을 보낸 주소가 바로 이런 값으로 되어 있습니다. 그래서 쭉 되어 있고 여기 발급 키라고 되어 있는 이 부분이 바로 인증키입니다. 인증키가 필요한 이유 제가 말씀드렸죠.
OpenAPI이기 때문에 권한을 주어야 한다. 권한 없이 마구잡이로 요청을 주게 되면 남용 오용에 위험이 있다. 그래서 인증 권한 신청을 한 거죠. 권한 신청을 우리가 포털사이트 들어가서 했고요.
한국관광공사 포털사이트에서 정부가 제공하는 데이터 사이트로 들어가서 OpenAPI 사용 권한을 인증키를 통해서 발급을 받았죠. 권한 신청이 된 거죠. 동일한 이야기입니다. 발급받은 인증키를 여기 넣었기 때문에 아, 이 요청은 인증받은 권한이 있는 사용자가 보낸 요청이다.
라는 걸 알 수 있는 거예요. 그래서 이렇게 요청했더니 API 미리 보기처럼 요청에 대한 응답을 성공적으로 받은 것까지 여러분 따라오셨으면 이제 준비 끝난 겁니다. 이렇게 잘 됐는데 그 다음 저희가 추가로 이제부터 겪어야 될 어려움에 대해서 같이 또 알아보겠습니다.
앞서서 개발한 이 HTML로 만든 MBTI 앱 의 실제 데이터를 연결하는 과정을 한번 진행해 보려고 합니다. 데이터를 이제 실제 API를 연결하는 방식으로 바꾸기 위해서 프롬프트를 제가 복사해 왔는데요. 간단하게 프롬프트를 소개해 드리겠습니다. 기존에 하드코딩 된 목 즉 가짜 데이터죠.
가짜 데이터를 한국관광공사 KorService2 이게 이제 저희가 신청해 놓았던 국문 API 이름입니다. 실 데이터로 바꿔라 UI는 그대로 데이터 소스만 교체 해서 쭉 설명하고 있죠. 먼저 목 정의 핵심은 이겁니다. 여러분들이 이 API를 활용해서 요청을 보낼 수 있도록 GET 하고 HTTP 하고 APIs 이 부분이 굉장히 중요한데요.
API에 대한 설명 부분을 긁어 온 것입니다. 그래서 KorService2 중에서 areaBasedList2를 요청할 것이다 라는 부분입니다. 이 부분이 요청하는 주소라고 생각하시면 돼요.
그래서 이렇게 입력하고 파라미터가 뭐가 있는지 서비스키는 여기 직접 입력이라고 되어 있는 부분을 제가 앞서서 발급 받았던 그 서비스키를 그대로 넣어 주려고 합니다. 여러분들도 똑같이 따라해 보시는 거죠. 그래서 여러분들이 발급 받은 인증키를 넣으시고요. 그 다음 모바일OS 모바일앱 타입은 JSON이고요.
그리고 나서 보시는 것처럼 파라미터 값 여기에 잘 넣었으면 쭉 가는 거죠. 어레인지 이것은 이미지 있는 것만 표시하는 것입니다. 그리고 나머지 값들 이런 것들이 있다. 예시로 입력한 값입니다.
서비스키 값은 제가 입력한 이 값이죠.
그리고 쭉 입력해서 MBTI 우리가 유형별로 조건을 맵핑하는 건데 유형이 자연힐링이라면 12번의 NA로 활동형이라면 28번 문화형이라면 14번의 VE로 미식형이라면 이런 식으로 저희가 정한 MBTI의 유형별로 코드를 다르게 맵핑해 주는 게 핵심입니다. 이렇게 맵핑했을 때 실제로 구현이 진행이 되는 거죠. 그러면 우리가 기존에 입력했던 데이터에서 실제 한국관광공사에서 제공하는 데이터로 바뀌게 되는 것입니다. 요청해 보겠습니다.
저는 클로드에서 진행하고 있지만 말씀드렸던 것처럼 챗GPT나 제미나이 어떤 걸로 진행하셔도 전혀 상관없습니다. 여러분들이 잘 하시는 것을 통해서 하시면 됩니다. 열심히 클로드가 구현해주고 있는데요. 구현이 다
완료된 후에 곧 바로 다시 뵙겠습니다. 여러분도 직접 여러분의 서비스에 기존에 저를 따라서 만드셨던 MBTI 서비스에 실제 데이터를 연결하는 이 작업을 저와 동일하게 진행해 보시기를 추천드립니다. 그러면 곧 뵙겠습니다. 개선된 서비스 즉 실제 데이터를 호출하도록 서비스를 완성했다면 여러분들이 각각 챗GPT를 쓰셨던 클로드를 쓰셨던 제미나이를 쓰셨던 상관없습니다.
제가 말씀드린 대로 완성하셨다면 여기에서 저는 클로드로 작업했기 때문에 올라가서 보면 실제 API를 호출하도록 수정했습니다. 이때 요청을 끝냈기 때문에
그 요청한 대로 오른쪽 위에 보시면 카피 버튼 옆에 클로드에 대한 설명입니다. 다운로드 HTML이란 버튼이 있습니다. 챗GPT던 제미나이던 상관없습니다. HTML을 다운로드 받기만 하면 됩니다.
HTML 다운로드를 받아보겠습니다. 눌러서 다운로드를 받게 되면 화면에 보시는 것처럼 HTML 파일이 있는 걸 볼 수 있습니다. 이 HTML 파일을 열어보겠습니다. 열면 보시는 것처럼 저희가 개발한 웹앱이 보이게 되는데요.
이때 테스트로 진행해서 결과 화면을 보겠습니다. 답변은 빠르게 해서 결과 화면만 확인하겠습니다. 결과 화면을 확인해 보면 지금 제가 열어둔 오른쪽에 열어둔 개발자 도구를 모두가 열 수 있습니다. 모두가 열 수 있어서 지금 제가 보여드리려고 하는 것은 굉장히 위험한 보안 사고가 난 상황을 보여드리려고 하는 것입니다.
그대로 지금 동작을 따라서 다시 설명 그럼 저를 따라서 실제 데이터를 다 연결 하셨다면 여러분들이 이제 각각 챗GPT라든지 제미나이라든지 클로드 각각의 서비스를 활용해서 완성하셨을 거예요. 그리고 완성한 서비스에 실제 데이터까지 같이 붙이셨을 거예요. 그 붙이는 게 끝났다면 클로드의 경우는 오른쪽에 이 카피 버튼을 옆에 있는 화살표를 누르게 되면 다운로드 as HTML 이라는 버튼이 보입니다. HTML로 다운로드 받는다는 거죠.
마찬가지로 여러분들이 만드신 제미나이던 챗GPT든 어떤 서비스든 상관없습니다. 이용해서 만드신 그 결과물은 전부 HTML일 텐데요. 그렇기 때문에 그 HTML을 다운로드하시던 복사하셔서 파일로 저장하시던 최종적으로 우리가 손에 넣어야 될 것은 HTML 파일입니다. 다운로드를 하게 되면 이 다운로드한 파일을 저는 이미 열 수 있어서 열어보겠습니다.
열어두었는데요. 열어두면 그대로 클로드에서 확인한 것처럼 똑같이 우리가 서비스를 열어서 볼 수가 있습니다. 볼 수가 있고 이 서비스에 대해서 테스트니까요. 빠르게 답변을 해서 마지막 결과 화면으로 이동해 보겠습니다.
왜 그러냐면 결과 화면에서 우리가 확인할 수 있는 데이터가 연결되었는지 에 대해서 체크할 수 있기 때문입니다. 결과 화면에서 쭉 내려가서 보시면 실제로 뭔가 기억 순서로 쭉 정렬된 걸 보실 수 있습니다. 뭔가 실제 데이터가 연결된 것처럼 보이죠. 연결이 되었는지를 어떻게 확인할 수 있느냐 보시면 여기에 areaBasedList2 라는 API가 호출된 것까지 우리가 브라우저로 테스트해서 호출했던 apis.data.go.kr 해서 이 API가 호출...
잘 안 보이시면 제가 좀 더 확대해서 보여드리겠습니다.
이렇게 해서 실제 API가 호출이 돼서 응답으로 온 걸 보시면 여기 아이템에 잘 들어와 있는 걸 확인하실 수 있습니다. 주소가 충청남도 공주시 경기도 가천시 서울시 이런 것들이 잘 들어와 있는 걸 확인하실 수 있어요. 가람화랑 여기 가람화랑이 여기 있네요. 실제 데이터를 받은 것이죠.
이렇게 잘 받아서 보여주고 있는 걸 확인하실 수 있어요. 실제 데이터를 잘 받았죠. 잘 적용이 된 거예요. 그런데 제가 진짜 말씀드리고 싶은 건 여기서부터입니다.
굉장히 중요한 보안 사고가 발생한 것입니다. 왜 그러냐면 지금 우리가 앞서서 API를 활용할 때 키를 받았죠. 인증키 기억나시죠? 이 인증키를 받아서 직접 전달하면서 이걸로 구현해줘 라고 했어요.
그렇기 때문에 우리가 인증키를 브라우저에서 개발자 도구를 누르면 확인할 수 있어요. 제가 다시 한번 확인시켜 드릴게요. 여기에서 개발자 도구에서 요청을 확인해 보면 여기에 서비스키이라는 이 키값에 들어 있는 우리의 인증키를 확인할 수 있죠. 즉 이렇게 인증키를 확인할 수 있게 되어버리면 이 인증키는 탈취가 가능해져요.
다른 사람이 가져가서 쓸 수 있는 거예요. 그렇게 인증키를 가져가서 쓰면 다른 사람이 써서 내 서비스의 한도가 소진되어 버릴 수도 있고 계정이 정지되어 버릴 수도 있는 위험이 있는 거죠. 사고 발생이죠. 절대로 인증키를 노출하면 안 되는 거예요.
제가 지금 여러분들께 이렇게 해보라고 말씀드린 거는 샘플 실습이기 때문이에요. 근데 이걸 따라서 그대로 서비스를 만들어 버리시면 이런 위험이 생기는 거죠. 남이 내 인증키를 그대로 가져가서 훔쳐 써가지고 한도가 다 소진되어 버리고 계정이 정지되어 버릴 위험이 있는 거예요.
절대로 그렇게 되면 안 되는 거죠. 그래서 브라우저에 직접 인증키를 포함시키는 행동은 절대 하면 안 됩니다. 이거는 AI랑 개발하시더라도 당연히 AI가 경고해 줄 거예요. 이런 게 이제 보안사고로 발생하는 큰 위험 지점이죠.
그러면 이걸 어떻게 막을 수 있느냐 이때 우리가 필요한 게 바로 우리만의 서버입니다. 내 서버를 통해서 내 서버 안에서 키를 숨겨서 내 서버 안에서만 접근할 수 있게 해야 돼요. 즉 외부에서는 내 서버에 접근하더라도 키를 보여주지 않아야 해요. 키를 숨겨서 그렇게 하려면 키를 숨기려면 내 서버가 필요한 거죠.
내 서버라는 것은 항상 켜진 컴퓨터다 라고 이해하시면 쉬워요. 항상 켜진 컴퓨터 그러니까 서버인데 이걸 빌려서 모든 사람들이 모든 사람들이 다 접속할 수 있게 만드는 거예요.
굉장히 쉽죠. 이렇게 하시면 돼요. 그럼 어떻게 그렇게 할 수 있느냐 그걸 하는 방법이 바로 배포입니다. 즉 내 서버를 만들어서 세상에 올리는 것 배포인데 사실 배포의 의미는 이 항상 켜진 컴퓨터 서버를 빌린다
라는 의미가 더 정확해요. 빌리는 거예요. 제가 뭐 프록시라는 단어 썼는데 이거는 참고로만 하시면 됩니다. 그래서 내 서버 즉 항상 켜진 서버 컴퓨터를 빌려서 배포해서 거기에 내 서비스를 올리면 내 웹 개발한 서비스를 올리게 되면 그곳에서 인증키를 숨기고 그 인증키 숨겨진 인증키를 활용해서 관광공사 서버로 요청을 보내는 것입니다.
그러면 키가 노출되지 않겠죠. 그렇게 해야만이 해결되는 거예요.
정리하겠습니다. 오늘 저와 함께 관광공사에서 제공하는 API들 오픈 API였죠. 여러 API들의 활용법에 대해서 자세히 알아봤어요. 사실은 오픈 API라는 게 무엇인지부터 살펴봤고요.
그 옵션에 대해서 자세히 살펴보는 법 여러 API들이 있기 때문에요. 각 하나하나의 API 옵션을 자세히 살펴보는 법에 대해서 배웠고 API 신청하는 방법 같이 해봤고요. 그리고 신청 끝나면 API 신청 완료된 그 API를 시험 호출하는 것까지 같이 실습을 해봤습니다. 자세히 방법을 가르쳐 드렸고요.
이때 주의점 하나 말씀드렸죠. 신청하고 나서 발급받게 되는 이 키 발급받게 되는 이 키는 노출이 되면 안 된다. 그런 방법은 여러 가지가 있겠지만 그 중 한 가지 방법으로 키를 서버에 저장해놓고 요청하는 방법을 안내해 드렸습니다. 서버에서 요청해야 되기 때문에 이 서버에서 요청할 때에는 배포가 필요해요.
왜냐하면 서버가 배포되어 있어야 하기 때문에 그런데 이 배포는 여러분 각자의 방법으로 편하신 대로 진행하시면 됩니다. 뭐 일반적으로 여러 가지 서비스들 많이 있으니까요. 무료 서비스들도 있고 유료 서비스들 중에서는 대표적으로는 AWS 너무 유명하니까요. 제가 AWS를 권장한다기 보다는 여러 가지 방법으로 배포하셔서 무료 서비스 이용하셔도 충분히 괜찮습니다.
이런 것들로 전체적으로 여러분들이 한국관광공사 오픈API 활용해서 서비스 개발하실 때 바이브 코딩부터 시작해서 어떤 식으로 코딩하면 되는지 그리고 나서 API 신청하는 방법 그리고 키를 어떻게 노출하지 않고 요청하는지 서버 배포하는 것까지 주의점까지 같이 전체 살펴봤습니다. 전체 강의 통해서 여러분들 정말 좋은 관광공사 API를 이용한 실효성 있는 좋은 서비스들 많이 만드셔서 공모전에 제출하셔서 좋은 결과 있으시기를 바라겠습니다.
강의 들어주셔서 감사합니다.