Application Programming Interface(API)
응용 프로그램 프로그래밍 인터페이스. 프로그래밍에서 프로그램을 작성하기 위한 일련의 부프로그램,프로토콜을 정의하여 상호작용하기 위한 인터페이스 사양을 말한다.
1. 동작
API 아키텍처는 일반적으로 클라이언트와 서버 측면에서 설명된다. 요청을 보내는 애플리케이션을 클라이언트라고 하고 응답을 보내는 애플리케이션을 서버라 칭한다. 따라서 날씨를 예로 들어 기상청의 날씨 데이터베이스는 서버이고 모바일 앱은 클라이언트이다.
API는 생성된 시기와 이유에 따라 총 4가지로 작동할 수 있다.
① SOAP API : SOAP API는 단순 객체 접근 프로토콜을 사용하고 클라이언트와 서버는 XML을 사용하여 메시지를 교환한다. 과거에 많이 사용되었으며 유연성이 떨어지는 단점을 가지고 있다.
② RPC API : 원격 프로시저 호출이라고도 하며 클라이언트가 서버에서 함수나 프로시저를 완료하면 서버가 결과를 클라이언트로 다시 전송하는 방식이다.
③ Websocket API : JSON 객체를 사용하여 데이터를 전달하는 최신 웹 API로 Websocket API는 클라이언트 앱과 서버간의 양방향 통신을 지원한다. 서버가 연결된 클라이언트에 콜백 메시지를 전송할 수 있다는 장점이 있어 REST API보다 효율적이다.
④ REST API : 오늘날 웹에서 가장 많이 사용되는 유연한 API로 클라이언트가 서버에 요청을 데이터로 전송한다. 그럼 서버가 이 클라이언트 입력을 사용하여 내부 함수를 시작하고 결과를 다시 클라이언트에게 반환한다.
2. 웹 API
웹 API 또는 웹 서비스 API는 웹 서버와 웹 브라우저 간의 애플리케이션 처리 인터페이스로 모든 웹 서비스는 API이지만 모든 API가 웹 서비스는 아니다. 즉 HTTP 프로토콜을 통해 서버와 상호작용하는 API를 우리는 웹 API라고 부른다.
기존의 API는 프로그래밍 인터페이스인 만큼 API를 사용하는 것은 주로 프로그램 내부 단에서 이루어졌다. 하지만 보다 다양한 분야에서 쓰일 수 있도록 네트워크와 웹에 맞춰진 API통신 아키텍처가 등장했다. 바로 REST 이다.
REST 개념은 2000년에 로이 필딩(Roy Fielding)이 최초로 소개했는데 다음과 같은 원칙을 가지고있다.
① Uniform Interface : 원칙 중 가장 중요한 개념으로 하나의 자료는 하나의 URL로 이루어져 있어야한다. 또한 간결하고 예측이 가능해야한다.
② Client-Server : 브라우저에게는 요청만을 서버는 응답만을 해야한다. 즉 브라우저에게 서버역할을 시키지말아라.
③ Stateless : 요청은 각각 독립적이어야한다.
④ Casheadble : 서버에서 보내주는 정보들은 캐싱이 가능해야한다.
⑤ Layred System : 클라이언트는 서버에 직접 연결되었는지 또는 중간 서버를 통해 연결되었는지 알 수 없다. 이때 중간 서버는 로드 밸런싱 기능이나 공유 캐시 기능을 제공해야한다.
⑥ Code On Demand : 아키텍처를 단순화시키고 작은 단위로 분리함으로 클라이언트-서버는 각 파트가 독립적으로 개선될 수 있어야 한다.
6가지의 원칙을 모두 잘 준수한 API를 우리는 따로 RESTful API라고 부른다. 하지만 오늘날 개념이 혼용되다보니 일부 혹은 전체가 요소가 전혀 REST하지 않아도 RESTful API라고 부르는 경우가 있다. 본 글도 웹 API에서 REST API를 설명하고 있지만 원치적으로 다르다는 것을 인지하도록 하자.
3. 생성
다른 개발자가 사용하고 싶어하느 신뢰하는 API를 구축하려면 실사와 노력이 필요하다. 또한 고품질 API설계에 필요한 단게는 다음을 권장하고 있다.
① 계획
② 빌드
③ 테스트
④ 문서화
⑤ 마케팅
'API' 카테고리의 다른 글
[API] HMAC 암호화 (0) | 2023.03.05 |
---|---|
[API] Kakao 지도 API & Geolocation API 사용하기 (0) | 2022.10.11 |
[API] 카카오 로그인 API JavaScriptSDK (0) | 2022.10.11 |