API는 응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다.
인터페이스(interface)는 컴퓨터 시스템끼리 정보를 교한하는 공유 경계를 의미한다, 터치 스크린과 같은 일부 컴퓨터 하드웨어 장치들은 인터페이스를 통해 데이터를 송수신 할 수 있으며, 마우스나 마이크론 폰가 같은 장치들은 오직 시스템에 데이터를 전송만 하는 인터페이스를 제공한다.
API는 정보를 가지고 있는 주체에서 만들다보니, API를 사용하기 위한 개발자 입장에서는 어떠한 방식으로 요청해야 정상적인 데이터를 받을 수 있을지 알 수 없습니다. 그렇기 때문에 보통 API를 제공하는 입장에서 어떤 방식으로 요청해야 하는지에 대한 문서를 만들게되고, 이러한 문서를 API 규격서라고 표현하는것이죠!
그렇다면 API를 제공하는 이유는 무엇일까요? 정보를 가지고 있는 입장에서, 남들에게 정보를 제공하기 위해서 별도의 규격을 만들어야하고, 그 규격에 대한 설명 문서도 만들어야합니다. 너무 불편하죠.. 하지만 왜 대형 플랫폼들은 수 많은 오픈 API를 제공하고 있을까요?
예를들어 페이스북이나, 네이버, 카카오톡과 같은 대형 플랫폼에서는 대부분 간편 로그인 API 정보를 제공하고 있습니다. 간편 로그인 API의 목적은 사용자가 여러 사이트를 하나식 가입하다보면, 너무 많은 사이트에 가입해야하는 단점이 있으니, 누구나 사용하고 있는 대형 플랫폼의 가입정보를 공유함으로써 간편하게 회원가입을 할 수 있도록 설계된 API입니다.
만약 여러분이 카카오톡 간편 로그인 기능을 통해 여러 사이트를 가입했다고 가정해보겠습니다. 그리고 카카오톡이 그런일은 없겠지만.. 너무 쓰기 싫어지고, 탈퇴하고 싶은 마음이 생겼다 하더라도 카카오톡을 탈퇴하는 순간 카카오톡을 통해 가입했던 수 많은 사이트 또한 포기해야되는 상황이 발생하게됩니다.
즉, 간편 로그인 기능을 제공함으로써 플랫폼 이탈율을 현저히 줄일 수 있기 때문에 대형 플랫폼들은 간편 로그인 기능을 제공하고 있습니다. 공유 경제 시대가 흐르면서 정보를 독점하는것보다 공유함으로써 더 많은 이익을 가져갈 수 있는 생태계가 만들어지고 있으며, 이러한 과정에서 다양한 오픈 API와, 비공개 API들이 존재하는것이죠!
API는 손님(프로그램)이 주문할 수 있게 메뉴(명령 목록)를 정리하고, 주문(명령)을 받으면 요리사(응용프로그램)와 상호작용하여 요청된 메뉴(명령에 대한 값)를 전달합니다.
쉽게 말해, API는 프로그램들이 서로 상호작용하는 것을 도와주는 매개체로 볼 수 있습니다.