API와 파이썬 데이터 분석
지난 포스팅에서는 5일치 비트코인 가격을 리스트로 만들어서 시계열 데이터 그래프를 그렸습니다. 암호화폐 거래소에서 가격을 보고 리스트를 직접 만들었습니다. 그런데, 가격정보와 같은 데이터는 API라는 것을 이용하면 쉽게 받을 수 있습니다. 이번 포스팅에서는 API가 무엇인지, 어떻게 사용하는지에 대해 알아보겠습니다.
글의 순서
API 개념
API와 UI
API를 활용하기 위해 알아야 할 것
REST API
API를 사용하는 방법
API 개념
API는 Application Programming Interface를 줄여서 부르는 소프트웨어 용어입니다. 여기서 Interface는 영어 뜻 그대로 서로 다른 물건이 만나거나, 소통하거나, 서로 영향을 미치는 영역을 말합니다.
Interface
the place or area at which different things meet and communicate with or affect each other
그러니까 API를 곧이곧대로 해석하면 응용프로그램이 서로 만나거나, 소통하거나, 서로 영향을 미치는 영역이라는 뜻입니다. 사실 영역에 그치는 것이 아니라, 이 영역에서 두 프로그램을 연결해주는 또 다른 프로그램도 포함됩니다. 한마디로 두 응용프로그램이 상호작용하기 위해 필요한 모든 것이라고 보시면 되겠습니다.
API와 UI
인터페이스라는 용어가 나온 김에 UI까지 알아보면 API를 이해하는데 도움이 될 것 같습니다. UI는 User Interface를 줄여서 쓰는 용어입니다. 우리가 주식가격 정보가 궁금해서 네이버 금융사이트에 접속했다고 가정하면, 네이버 금융 사이트에서 보여주는 화면 자체가 UI입니다. 여기에서는 실시간 인기 주식 종목을 볼 수 있으며, 검색창에 검색어를 입력하고, 검색 버튼을 클릭할 수 있습니다. 물론 이 밖에도 우리가 정보를 파악하기 위해 그래프와 표를 볼 수 있습니다. 검색창, 검색버튼, 그래프, 표 등이 모두 UI 인 것입니다. UI는 사용자와 네이버 금융 사이트를 서로 만나게 해주고, 상호작용할 수 있게 해 줍니다.
만약 내가 특정 주식 종목을 관찰하고 싶어서 이것을 모니터링 하는 프로그램을 만들었다고 가정해보겠습니다. 이 프로그램을 간단히 모니터링 프로그램이라고 부르겠습니다. 이 모니터링 프로그램은 내가 원하는 주식 종목을 검색하면, 주가를 그래프와 표로 보여줍니다. 이와 같은 UI는 모니터링 프로그램과 나를 만나게 해주고, 상호작용할 수 있게 해주는 역할을 합니다.
그런데, 모니터링 프로그램이 주식 정보를 보여주려면 이 정보를 주는 서버(server)로부터 데이터를 가져와야 합니다. 서버에 설치되어 있는 프로그램이 정보를 달라는 요청을 받으면 정보를 주는 것입니다. 이처럼, 내가 만든 모니터링 프로그램이 서버 프로그램에 접속해서 데이터를 받아올 때 필요한 것이 API입니다. 다시 말해 모니터링 프로그램이 서버 프로그램과 만나고 상호작용하게 해주는 것이 바로 API인 것입니다.
API를 활용하기 위해 알아야 할 것
‘사용자 ⇌ 모니터링 프로그램 ⇌ 서버’라는 구도를 생각하면서 얘기를 진행해 보겠습니다. 모니터링 프로그램과 서버 프로그램 사이의 영역과 여기서 상호작용이 일어날 수 있게 해주는 것을 API 라고 합니다. API를 만드는 주체는 서버 프로그램 쪽에 있는 소프트웨어 엔지니어입니다.
API는 소프트웨어 개발자들이 원하는 대로 설계합니다. 소프트웨어 개발자들은 API에 접속하기 위한 방법이나 API에서 일어나는 상호작용을 결정합니다. API에 접속하는 응용프로그램을 제한할 수도 있으며, 돈을 내야 사용 권한을 주기도 합니다.
중요한 것은 API가 내부적으로는 어떤 작업을 하고 있는지 알 수 없더라도, API를 이용하면 우리가 원하는 자료를 받아올 수 있다는 것입니다.
REST API
요즘 대부분의 웹서버들은 REST API 형태로 서비스를 제공합니다. 우리의 목적은 API를 이용하여 원하는 데이터를 받아오는 것이므로, REST API를 사용할 수 있을 정도로 이해해 보는 것이 이 포스팅의 목적입니다.
REST는 Representational State Transfer라는 용어를 줄인 말로 웹(HTTP)의 장점을 최대한 활용하기 위해 만들어진 아키텍처입니다. REST API 메시지만 보고도 이를 쉽게 이해 할 수 있는 구조로 되어 있습니다.
서버에는 우리가 원하는 데이터가 있습니다. 이를 자원(resource)라고 합니다. 우리가 만든 응용 프로그램은 이 자원들 갖다 쓰기를 원하고, 서버의 API는 신속하게 자원을 제공해 줄 수 있도록 설계되어 있습니다. 자원을 이름으로 잘 구분해 놓으면 빨리 찾는데 도움이 됩니다. 이처럼 자원을 이름으로 표시해놓고 주고받도록 만들어 놓은 API를 REST API라고 합니다.
REST는 우리의 응용 프로그램이 서버 데이터에 접근하는데 사용할 수 있는 GET, PUT, DELETE 등의 함수 집합을 정의하는데, 서버 API 주소에서 어떤 일이 일어나는지를 묘사해 줍니다. 이들 함수는 인자(parameter)를 필요로 하며, API 주소를 엔드포인트(end point) 라고도 부릅니다.
API를 사용하는 방법
step 1) API 키를 받습니다. API를 제공해주는 서버의 확인을 받은 계정을 생성하면 됩니다.
step 2) HTTP API를 사용할 응용 프로그램을 설정합니다. API 키를 사용하여 API 요청을 쉽게 구성할 수 있습니다.
step 3) API를 코드에서 사용합니다.
마치며 …
이번 포스팅에서는 API가 무엇인지, 어떻게 사용하는지에 대해 알아보았습니다. API에 대해 기본적으로 알아야 할 것들과 많은 웹서버에서 사용하고 있는 REST API에 대해서도 살펴보았습니다.
API 개념을 이해하는 데도 가장 빠른 방법은 직접 써보는 것입니다. 다음 포스팅에서는 API를 사용하여 암호화폐 거래소로부터 가격 데이터를 받아오는 파이썬 코딩을 해보겠습니다.
함께 참고하면 더 좋은 글 :
1. 파이썬 데이터 분석을 위한 API 이해, REST API, WebSocket API
2. 업비트 API로 이해해보는 REST API
3. 시계열 데이터 가시화 (1) 파이썬 그래프 그리기 3단계
4. 시계열 데이터 가시화 (2) 보고서용 파이썬 그래프 만들기
5. 파이썬 데이터 분석! 데이터 분석을 위한 코딩언어 파이썬
6. 알아두면 좋을 컴퓨터 작동원리. 폰 노이만 아키텍처
7. 파이썬 프로그래밍 시작 (14) 패키지
참고자료
[1] Red Hat(2018), Understanding APIs
[2] NHN Cloud (2016), REST API 제대로 알고 사용하기
[3] 출판사 영진닷컴 블로그(2022), [Django] 웹 개발 REST API/JSON 알아보기!
[4] aws, API란 무엇인가요?