API란


API(Application Programming interface

응용 프로그램에서 사용할 수 있도록, 운영체제나 프로그래밍 언어가 제공하는 기능을 제어 할 수 있게 만든 인터페이스를 뜻한다. 주로 파일 제어, 창 제어, 화상 처리, 문자 제어 등을 위한 인터페이스를 제공한다.

키보드를 통해 우린 컴퓨터와 대화한다. 키보드의 버튼을 누르면 -> 키보드에서 컴퓨터로 전달되고 -> 스크린에서 텍스트를 볼 수 있다. 키보드를 통해서 컴퓨터와 인터렉션(interaction : 상호작용 ) 하는 것이다.

이와 같은 맥락으로 API는 프로그램과 프로그램이 서로 상호작용하는 것을 도와주는 매개체로 만들어진 게 API이다.

API 역할


API는 앱과 기기가 원활하게 통신할 수 있도록 한다.

보통 API를 식당 또는 레스토랑에 빗대어 표현한다. 손님(내가 만드는 프로그램)이 자리에 앉아 웨이터(API)에게 주문을 하면 웨이터는 내 주문 내역을 주방장(API)는 다시 손님(내가 만든 프로그램)에게 음식을 가져다 준다. 웨이터가 손님의 주문을 주방으로 전달하는 매개체 역할을 하는것이다. 또 다른 예시로는 키오스크가 되겠다. 고객이 키오스크를 통해 주문을하면 키오스크가 주방에 전달하듯 키오스크가 매개체가 되어 연결해주는 역할을 하는것이다.

API의 장점 : 손님은 주방에서 무슨일이 일어나는지 잘 모른다. 관심을 가질 필요가 없기 떄문이다. 내가 가져다쓰는 API의 기능을 어떻게 구현하는지 몰라도 상관없다. 그저 우리는 API가 가져다주는 기능들을 사용하면 되는 것이다(완성된 요리를 먹)는 것이다. 시간과 노력을 동시에 아낄 수 있다. 이처럼 API는 처음부터 개발하거나 유지 보수할 필요가 없는 외부 데이터와 기능에 접속할 수 있게 해준다.

API는 문서 공개가 없으면 사용할 수 없다.


API : 프로그램을 위한 인터페이스이다. 더 쉽게 말해서 데이터를 주고 받기 위한 방법과 그 규격을 뜻한다. API 문서란 바로 이 사용법과 규격을 제공하는 문서이다. 이 사용법이 제공되어 있지 않다면 Private API인 것이다. (무료로 쓸 수 있는건 거의 public API 라고 보면 된다.)

API는 공짜로 제공해주는것도 있고 , 어느정도 이상 사용하면 돈을 내야하는 경우도 있다. 즉 , 보통은 무료이지만 일정 횟수 이상 호출하게 되면 비용을 지불해야 할 수 있다.

” API를 제공하지 않는 다는 의미는 , 업체쪽에서 가지고 있는 정보를 제공하지 않는다는 의미 “

JSON 방식이란


JavaScript Object Notation의 줄입말로 , 속성 값으로 이루어진 데이터 오브젝트를 전달하기 위해 인간이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷이다. 특히, 인터넷에서 자료를 주고 받을 때 그 자료를 표현하는 방법으로 알려져 있다. 그럼 담겨 있는 상품에 대한 정보를 서버에 응답해주는 JSON 객체이다.

다양한 API 종류

REST API, GraphQL API 는 무엇인가 ? ‘프로그램이 서로 소통 할 수 있게 도와준다’라는 같은 목적을 가진 생김새만 다른 키보드들이다.

공공 API(Public API) 공공 API중에는 날씨 API가 있다. 만약 한국날씨 정보를 원한다면 전 세계 날씨 정보를 갖고 있는 서버에서 터를 가지고 자신에게 맞게 사용하기가 어려울 것이다. 정보가 너무 방대하기 때문이다. 그렇기 때문에 네이버에서는 자사 데이터를 활용해서 사용할 수 있도록 ‘네이버 날씨 API’을 사용자들에게 공개한 것이다. Public API는 개방형 API로, 모두에게 공개된다. 누구나 제한 없이 API를 사용할 수 있는게 특징이다.

누구나 제한 없이 API를 사용할 수 있지만 제3자에게 노출되거나 중요한 기업 데이터가 유출될 수도 있다. 그래서 어떤 API는 접근권한이 정해져 있다. 가끔은 API 사용에 제약이 있거나 사용하기 위해서 지불해야 할 때도 있다.

REST API : 인터넷에서 시스템 또는 컴퓨터 간의 통신 채널을 제공하는 웹 서비스의 아키텍처 스타일이다. 따라서 REST API는 REST의 아키텍처 스타일로 지원되는 애플리케이션 프로그램 인터페이스이다. 즉 , RESAST는 통신하는 행위를 말하고 REAST API는 REAST방식으로 데이터를 주고 받을 수 있게 해놓은 수단이라고 할 수 있다.

  • 아키텍처란 최적화를 목표로 두고 시스템 구성과 동작원리 그리고 시스템의 구성환경 등을 설명 및 설계화하는 청사진 또는 설계도이다. 기본 Computer Science 지식을 기반으로 주변 환경 등을 고려하여, 최상의 소프트웨어를 구성하는 방법을 연구하고 이를 바탕으로 가이드하는 역할을 한다.

REST API 예

  • Instargram API 사용하면 애플리케이션에서 사용자 태그, 사진, 계정 등을 검색할 수 있다.
  • Twitter 는 개발자가 쿼리 하여 최신 트윗을 가져오거나ㅏ 결과를 JSON 형식으로 반환하는 검색 쿼리를 제공할 수 있는 REST API도 제공한다.
  • GitHub는 또한 GitHub 문제 추적, 사용자 활동 추적, 앱에서 리포지토리 생성과 같은 작업을 수행하는 데 활용할 수 있는 슈퍼 REST API를 제공한다.

*쿼리란 쿼리는 웹 서버에 특정한 정보를 보여달라는 웹 클라이언트 요청(주로 문자열을 기반으로 한 요청이다)에 의한 처리 쿼리는 대게 데이터베이스로부터 특정한 주제나 어귀를 찾기 위해 사용된다.

Interface란?


인터페이스는 말 그대로 어떤 기계간의 장치끼리 정보를 교환하기 위한 수단이나, 방법을 의미한다. 예시로 TV를 켜기위해 TV리모컨 전원 버튼을 누름으로써 TV가 켜지게 된다. 즉 , 사전에 TV와 통신하기 위해서는 TV리모콘에 TV에 정의된 규격에 의해 어떤 신호를 보낼 수 있도록 만들어지는 장치이며, 이러한 신호를 서로 주고 받기 위한 방법을 인터페이스라고 한다.

요약


  • 프로그램을 만드는데 필요한 어떤 기능을 직접 구현하지 않고 API 제공자들이 제공하는 데이터의 모듈 등 기능을 갖다 쓸 수 있게 해주는 것이 API와 API 문서이다.
  • 예시로 카카오톡 결제 API를 내 프로젝트에 사용하고 싶다면 카카오에서 제공하는 결제 API를 문서에서 제시하는대로 맞춰서 사용하면 된다.
  • API가 공개되지 않았다면 사용할 수 없다. 또한 공개된 API라고 하더라도 호출 횟수가 많아지면 비용을 지불해야 할 수 있다.