수도없이 들어봤고, 실제 프로젝트에서도 써봤지만 정작 머릿속으로 정리하거나 글로 풀어 쓰려고 하면 막히는 개념들이 있다. 나한테는 그중 하나가 바로 “API란?”이다.
개발하다 보면 Google Maps API, Toss Payments API, Open API… 이런 식으로 API라는 말을 정말 많이 듣는다. 하지만 그 단어가 정확히 어떤 의미에서 쓰이고, 왜 필요한 건지 한 번쯤은 제대로 짚고 넘어갈 필요가 있었다.
API라는 개념에 접근하기전에 인터페이스라는 것에 대해 먼저 알고 넘어가기로 했다. API는 Application Programming Interface, 결국 Interface이기 때문이다.
보통 인터페이스에 대한 설명에는 스마트폰과 전원버튼을 예시로 사용한다.
전원이 꺼진 스마트폰이 있다고 가정해보자.
전원버튼을누르면전원이켜진다.
이때 중요한 점은 내가 스마트폰 내부에서 무슨일이 일어나는지 모른다는 점이다.
스마트폰 내부의 복잡한 구조등을 몰라도 사용자는 그저 버튼을 누르기만 하면되는 것이다.
이처럼 간단하게 정해진 방식으로만 사용할 수 있게끔 A(사용자)와 B(스마트폰)를 연결해주는 통로가 바로 인터페이스이다.
API는 '애플리케이션 프로그래밍 인터페이스(Application Programming Interface)'의 약자로, 두 소프트웨어 애플리케이션이 서로 통신하고 데이터를 주고받을 수 있도록 하는 규칙과 프로토콜의 집합입니다.
구글에 검색하면 나오는 API의 정의이다.
쉽게 풀어보면 API는 프로그램끼리 소통하는 인터페이스다.
스마트폰 예시에서는 '사람'과 '기기'를 연결했다면, API는 '프로그램'과 '프로그램'을 연결한다.
내가 사용했던 Toss Payments API문서를 살펴보면
(https://docs-pay.toss.im/reference/normal/create)
해당 형식의 요청에 필요한 파라미터를 문서로 만들어서 정리해 주고 있다.
나는 내부에서 무슨일이 일어나는지 모르지만 Toss측에서 원하는 파라미터만 보내서 요청하면 내가 원하는 Toss의 결제 기능을 사용 할 수 있는 것이다.
※반대로 생각하면 이런 정형화된 문서가 필수적이라는 단점도 가지고 있다
결국 API는 '약속된 방식으로 소통하는 통로'라고 볼 수 있겠다.