[클래스 03] 데이터를 이용하고 싶어 : API
이제 [파트 01] 처음 만나는 커서와 CS 지식의 마지막 주제, 대망의 API에 대해 알아볼 차례입니다. 여러분은 API를 사용해본 적이 있나요? 아마 대부분의 사람이 없다고 답할 것입니다. 그도 그럴 수밖에 없는 것이 API는 보통 개발자들이 사용하는 도구로, 프로그램 영역에서 이용되어 일반 사용자는 직접 접할 일이 없거든요. 이번 시간에는 바로 그 API가 도대체 무엇인지, 그리고 얼마나 무궁무진하고 실용적인 방식으로 활용될 수 있는지 알아보겠습니다.
API가 뭐예요?
API를 검색하거나 커서에게 물어보면 이해하기 어렵거나 종종 더 알 수 없는 설명을 해줄 때가 있습니다. 때문에 우리는 API를 사용해보기도 전에 겁을 먹고 포기하는 경우가 종종 있을 겁니다. 개념부터 제대로 이해하지 못하는데 API를 어떻게 활용할 수 있을까요?
다음은 AI에게 API란 무엇인지 이해할 수 있도록 설명을 요청한 것입니다.
하지만 설명 속에서 반복되는 단어들을 유심히 들여다보면 API가 대략 무슨 뜻인지 알아챌 수 있습니다. 다음과 같이 자주 등장하는 단어들을 한 번 살펴보세요.
통신, 교환, 주고받을, 사용, 상호작용, 주고받는, 제공
이런 단어를 보면 API는 결국 무언가를 주고받는 즉, 서로 교환하는 것이 주된 목적인 것 같습니다. 실제로도 그렇습니다. API는 누군가가 이미 개발해둔 프로그램이나 서비스로, 그 프로그램이나 서비스의 목적은 기능이나 어떤 무언가를 제공하는 것에 있습니다. 실생활에서 API를 이해할 수 있는 좋은 비유는 바로 엘리베이터입니다. 엘리베이터는 어떤 방식으로 작동할까요?
엘리베이터로 API 이해하기
여러분은 엘리베이터를 이용할 때, 그 안에 어떤 기술로 인해 엘리베이터가 동작하는지 알고 있진 않을 겁니다. 예를 들어, ‘위로 올라가는 버튼을 누르면 OOO 알고리즘에 따라 엘리베이터가 현재 있는 위치를 파악한 다음, 사용자의 요청을 분석해 최적의 경로를 선택하여…’와 같은 생각을 하며 탑승하는 사람은 없습니다. 우리는 ➊ 그저 [올라가기] 또는 [내려가기] 버튼을 눌러서 엘리베이터가 오면 탑승하고, 원하는 층을 눌러 이동할 뿐입니다. 다음과 같이 말이죠. ➋ 이때 중간 과정은 몰라도 됩니다. ➌ 우리가 알아야 하는 건 엘리베이터의 버튼을 누르면 원하는 층에 도착한다는 ‘약속된 동작’입니다. 이것만 알면 충분하죠.
이것이 바로 API의 개념입니다. API는 정해진 약속에 따라 요청을 보내면 사용자는 중간 과정이나 복잡한 내부 구조를 몰라도 원하는 결과를 얻을 수 있도록 만들어진 구조로 되어 있습니다. 마치 엘리베이터의 버튼만 누르면 누구든 원하는 층으로 데려다주는 것과 같은 원리입니다.
리모컨으로 API 이해하기
또 다른 예로 에어컨 리모컨을 생각해봅시다. 무더운 여름, 에어컨을 켜기 위 리모컨을 들었을 때, 그 리모컨이 내부적으로 어떻게 작동하고 에어컨에게 신호를 보내는지 아는 사람은 많지 않습니다. 고민 없이 전원 버튼을 한 번 딸깍 누르면 바로 작동되며, 온도가 너무 높을 땐 [온도 낮추기] 버튼을, 바람의 방향을 바꾸고 싶을 땐 [바람 전환] 버튼을 눌러 에어컨을 조작만 하면 되니까요. 이처럼 어떻게 작동하는지 몰라도 약속된 버튼만 누르면 원하는 결과를 얻을 수 있는 점에서 리모컨 역시 API와 유사한 구조입니다.
내부 기계 구조나 리모컨이 어떻게 동작하는지 우리는 전혀 모릅니다. 그저 버튼을 누르면 원하는 동작이 실행되기 때문에 리모컨을 편하게 사용할 수 있죠. 어디서 많이 들어본 설명이죠? 맞습니다. 리모컨도 API의 일종이라고 볼 수 있습니다.
이 정도면 API의 개념과 이해가 어느 정도 와닿을 것입니다. 기억하세요. API는 누군가가 미리 설계하여 만든 것으로, 사용자는 그것이 어떻게 만들어졌는지 내부 구조나 제작 방식 등을 몰라도, 약속된 입력만 하면 약속된 결과를 얻을 수 있습니다. 이 원리를 이해했다면 어떤 API든 충분히 다룰 수 있습니다. 그럼 간단하면서도 다양한 예제를 만들어보며 API 사용 감각을 익혀봅시다.
[바이브 코딩 18] 랜덤 이미지를 주는 API로 미술관 사이트 만들기
처음으로 연습해볼 API는 감을 익혀보기 위해 아주 간단한 기능을 가진 Lorem Picsum입니다. 이 API는 이름에서 느껴지듯이 말 그대로 어떤 입력값을 주면 그에 맞는 랜덤 이미지를 주는 간단한 API입니다. 보통 API는 사용법이 정리된 문서를 제공합니다. 따라서 우리가 리모컨을 사용할 때 설명서를 참고하는 것처럼, API도 사용하기 위해서는 해당 API의 문서나 설명서를 확인하는 것이 기본입니다.
▶ 물론 리모컨은 거기서 거기이므로 실제로 설명서를 읽어보는 사람은 거의 없습니다.
01 다음 사이트에 접속하면 랜덤 이미지 API를 사용하는 설명서가 있습니다. 이 문서는 비교적 친절하게도 요청 방식과 응답 결과를 그림으로 보여주기 때문에 처음 접하는 사람도 쉽게 이해할 수 있습니다. 다음 사이트에 접속하여 어떤 구성으로 되어 있는지 살펴보세요.
Lorem Picsum : picsum.photos
02 리모컨처럼 버튼 누르면 어떤 동작이 실행되는 것과 비슷하게 동작할 겁니다. API 설명서를 보면 웹 브라우저에 주소를 입력하라는 것처럼 보이네요. 실제로 주소를 입력해보겠습니다. 웹 브라우저에 picsum.photos/300를 입력해 접속해보세요. 그러면 가로세로 300의 정사각형 형태로 랜덤 이미지가 나타납니다.
중간 과정은 알 수 없지만 약속한 이미지를 얻었습니다. 그런데 이걸로 뭘 할 수 있을까요? API는 ‘어떻게 활용하느냐’에 따라 그 가치가 달라집니다. 예를 들어, 누군가가 랜덤 이미지로 가상의 사진 전시회 사이트를 만들어 제공하고 싶다면, 그 사람에게는 랜덤 이미지를 주는 API가 꽤 유용한 자원이 되겠죠? 이처럼 API를 만드는 사람은 자신이 수집하여 API로 제공하는 데이터가 유용하다고 여긴다면 돈을 받고 팔 수도 있습니다. 실시간으로 시세가 변동하는 부동산 데이터를 싹 다 모아서 제공하는 API를 만들었다고 가정해봅시다. 이 부동산 API를 제공하는 사람은 부동산 애플리케이션을 만드는 사람에게 API 사용권을 팔 수 있겠죠. 물론 Lorem Picsum의 랜덤 이미지 API를 만든 사람은 ‘뭐… 난 어떻게 쓸지는 잘 모르겠고, 그냥 랜덤 이미지 주는 것으로 만들어봤어. 어떻게 쓸지는 너희가 알아서 해.’라는 의도였겠지만요. API의 세계는 그렇게 돌아갑니다.
03 자, 이제 커서를 이용하여 실제로 가상의 랜덤 사진 전시회 사이트를 만들어보겠습니다. 커서를 열고 빈 폴더를 준비한 다음 이 API를 알려주면서 가상의 사진 전시회처럼 보이는 웹사이트를 만들어보라고 하겠습니다. Lorem Picsum은 한 번 요청에 랜덤 이미지 1장만 주니까, 커서에게 30번 요청해서 30개의 이미지를 받으라고 하면 됩니다.
커서로 작업을 진행하는 중간에 ‘API를 이용하여 이미지를 가져오고…’라는 메시지가 보일 겁니다. 바로 이 부분이 API를 호출하는 핵심 코드가 들어 있는 작업입니다. 이처럼 API 요청은 웹 브라우저에 주소를 입력하는 방식만 있는 것은 아닙니다. 코드를 통해서도 얼마든지 API를 호출할 수 있습니다.
04 이제 만든 사이트를 한 번 열어보세요. 놀랍게도 진짜 사진 전시회 사이트와 비슷하게 만들어진 것을 확인할 수 있습니다. 페이지를 여는 순간 API 호출을 통해서 이미지를 가져오고 로딩하는 것도 눈에 보입니다.
물론 이번에 커서에게 요청해서 만든 전시회 사이트에는 이미지와 함께 설명이 들어가 있는 것을 볼 수 있습니다. 실제로 랜덤한 이미지로 구성된 전시회 사이트라 그 설명과는 잘 맞지 않을 겁니다. 이럴 땐 커서에게 설명을 지워달라고 요청하면 간단히 해결할 수 있겠죠?
이번 실습에서의 핵심은 여러분이 직접 이미지를 찾거나, 다운로드하거나, 사이트에 업로드하거나 하지 않아도 된다는 점입니다. 여러분의 사이트에는 30개나 되는 이미지가 사용되었지만, 그 이미지들을 하나하나 찾거나 일일이 저장하여 서버에 올리는 작업이 필요 없습니다. https://picsum.photos/300과 같이 API를 통해 필요한 데이터를 요청해서 편하게 가져온 다음 그냥 사이트에 적용하기만 하면 되는 거죠. 이처럼 API는 여러분의 개발에 필요한 리소스를 쉽고 빠르게 얻게 하며 편리하게 활용할 수 있도록 해줍니다.
여러분은 실제 예제를 통해 API를 어떻게 활용하는지 직접 체험했습니다. 이를 통해 번거로운 과정은 생략하고 간단한 요청만으로 원하는 데이터를 쉽게 가져오는 API의 장점을 확인했을 겁니다. 다음 실습에서는 공공데이터 API를 활용하여 데이터를 가져오고 나만의 대시보드를 만들며 API 활용에 더 익숙해져 봅시다.
[바이브 코딩 19] 한국거래소 주식 데이터 API로 나만의 대시보드 만들기
첫 번째 책인 《이게 되네? 챗GPT 미친 크롤링 24제》를 출간한 이후 독자들에게 가장 많이 받은 질문은 주식 데이터 크롤링에 대한 것이었습니다. 사실 주식 데이터는 크롤링을 하지 않아도 API만 사용할 줄 알면 훨씬 더 정확하고 안정적으로 데이터를 가져올 수 있습니다. 이번에는 공공데이터 포털의 데이터를 이용해보겠습니다.
공공데이터 포털이라고 하면 복잡하게 생각하는 사람이 많습니다. 하지만 전반적인 API 활용 과정은 다음과 같이 3단계로 진행하므로 어렵게 생각할 필요가 없습니다.
API 활용 신청을 한다.
API 키를 발급받는다.
API 문서를 참고해 API 키와 함께 데이터를 요청한다.
복잡하게 보이는 일도 겁먹을 필요 없이 이렇게 단계별로 나누어 생각하면 쉽게 느껴질 겁니다. 우리는 필요한 API 키만 신청한 후에 그 키로 데이터 요청만 제대로 해주면 됩니다.
01 본격적으로 공공데이터 포털의 한국거래소 주식 데이터를 이용해서 나만의 대시보드를 만들어보겠습니다. 먼저 다음 주소를 통해 공공데이터 포털의 주식시세정보에 접속합니다.
공공데이터 포털 - 한국거래소 주식 데이터 : http://bit.ly/3IbKrnQ
02 공공데이터 포털에 회원가입을 한 다음 [활용신청]을 눌러봅니다. 그러면 활용 목적과 라이선스 표시 등 기본적인 내용을 입력하라고 합니다. 활용 목적 등 적당히 내용을 입력하고 ‘동의합니다’에 체크한 다음 [활용신청]을 눌러 마무리합니다.
03 그러면 활용신청 현황에 여러분이 신청한 공공 API가 추가될 것입니다. 우리가 신청한 API는 ‘금융위원회_주식시세정보’이므로 해당 목록을 눌러봅니다.
04 이제 목록을 눌러 신청한 API 항목으로 들어가면 API 설명 문서와 함께 두 종류의 API 키가 있을 것입니다. 이 API 키는 앞으로 데이터를 요청할 때 필요하니, 반드시 복사해두세요!
05 조금만 더 아래로 내려보면 해당 공공 API의 일일 호출 횟수도 정해져 있습니다. 우리가 고른 주식시세정보 API는 하루에 무려 10,000번까지 요청할 수 있는 꽤 넉넉한 API입니다.
06 이제 필요한 것은 API 키와 API 설명 문서입니다. 보통 공공 API는 설명 문서를 워드 파일 형태로 제공합니다. 서비스 정보 아래에 있는 참고문서 워드 파일을 다운로드하여 파일을 열고, [Ctrl + A] ➝ [Ctrl + C]로 전체 내용을 복사한 뒤, 커서에 새 파일을 만든 다음 복사한 내용을 붙여 넣어 텍스트 파일(.txt)로 저장합니다. 그러면 커서가 보고 파일을 참고할 수 있습니다. 따로 서식이나 텍스트 내용은 정리하지 않아도 됩니다. 참고로 커서는 사람이 아니라서 서식이나 줄 간격, 복잡한 구조를 따지지 않습니다. 그냥 텍스트만 잘 담겨 있으면 알아서 문서를 해석해줍니다. 여기서는 주식api.txt라는 이름으로 새 파일을 만든 뒤 복사한 내용을 붙여 넣고 저장해주었습니다.
07 커서에게 다음과 같이 부탁해서 주식 대시보드를 만들어달라고 합니다.
08 그러면 커서가 주식 API 설명서를 읽고 알아서 필요한 내용을 찾아 코딩하기 시작합니다. 모든 과정이 다 진행될 때까지 기다렸다가 [Accept all]을 눌러 반영하세요.
09 모든 과정이 끝나면 index.html을 열어준다고 할 겁니다. 만약 그렇게 해주지 않으면 직접 index.html을 열면 됩니다.
실행해서 사이트를 열었지만 아무런 데이터가 보이지 않습니다. 데이터를 요청한 시각이 7월 9일 오후 8시 35분이기 때문입니다. 이때는 주식 시장이 마감했으므로 아무런 데이터가 없습니다.
10 날짜를 선택하여 [새로고침]을 누르면 그날 주식 시장 마감 전의 데이터를 볼 수 있도록 커서에게 프로그램을 수정해달라고 요청해봅시다.
11 코드 수정을 마친 후 새로고침하여 index.html 파일을 다시 열면 제대로 동작할 것입니다.
12 만약 주식 데이터 항목 중 종가의 단위가 한국의 화폐 단위가 아니라서 마음에 들지 않다면 어떻게 해야 할까요? 커서에게 수정을 요청하면 됩니다.
이제 아주 쉽게 한국 주식 데이터를 수집할 수 있게 되었습니다. 이것이 바로 API의 힘이며, 이번 실습을 통해 API를 어떻게 활용하는지 감이 잡혔기 바랍니다. 사실 여러분이 필요로 하는 데이터는 이미 대부분 API 형태로 제공하고 있습니다. 따라서 수요가 많은 데이터는 크롤링하기 전에 API가 제공되는지 먼저 확인하는 것을 추천합니다.
