-
TIL.51 API 란?TIL/Django 2020. 11. 29. 23:27728x90
API의 사전적 정의
“API(Application Programming Interface, 응용 프로그램 프로그래밍 인터페이스)는
응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을
제어할 수 있게 만든 인터페이스를 뜻한다.”(위키디피아)
API는 어떠한 응용프로그램에서 데이터를 주고 받기 위한 방법을 의미한다고 볼 수 있다.
어떤 사이트에서 특정 데이터를 공유 할 경우
어떤 방식으로 특정 데이터의 정보를 요청해야 하는지,
어떤 데이터를 제공 받을 수 있을지에 대한 규격들을 API라고 부른다.
다시 한번 정리하자면,
API는 응용 프로그램에서 사용할 수 있도록, 운영 체제 혹은 프로그래밍 언어에게
제공하는 인터페이스(규격)을 의미한다.
기상청의 공공 API로 예를 들어보자.
기상청에서 수집하고 있는 정보를 사용자에게 쉽게 제공하기 위한 목저으로 만들어진 사이트이다.
자료 포멧이라는 것을 보면 어떠한 정보를 제공할때 어떤 포멧으로 제공하는지에 대해
알려주는 내용으로 인터넷의 발달과 함께 조금더 쉽고 활용하기 편한 규약이 필요해지게 되었고
그렇게 발전하면서 생겨난 포멧들이 XML 이나 Json이라는 규격이다.
첨부문서를 보면 아래와 같다.
해당 API를 제공하는 목적, 활용 하는 방법 등에 대해 자세한 설명이 있는 문서를
보통 "API 문서"라고 표현한다.
API 문서는 어떤 정보를 전달 받기 위해 어떤 방식으로 요청해야하는지
응답 결과는 어떻게 이루어지는지에 대한 자세한 내용이 기술되어 있다.
(쉽게 생각해서 메뉴얼 문서라고 생각하면 된다.)
위의 기상청 API에서도 보았듯
API는 어떤 응용프로그램이 자신이 가지고 있는 정보를 제공하기 위해
어떤 방식으로 통신할 것인지에 대한 규격을 만들게 되는데 이러한 규격을 API라 표현한다.
개발자들이 흔히 업체쪽에서 API를 제공하지 않는다는 의미는, 업체쪽에서 가지고 있는 정보를 제공하지 않는 다는 의미가 되는것이고, API를 제공 받기 위해서는 해당 업체쪽에서 규격을 만들어서 알려주어야 한다는 의미가 됩니다.
API를 제공하는 이유
정보를 가지고 있는 입장에서 보았을때 API를 왜 제공하는 것일까
위에서처럼 API를 제공하기 위해선 별도의 규격도 만들고
그에따른 API 문서도 만들어야 하는등 시간과 노력이 들어가고 귀찮은 과정을 수행해야한다.
그런데도 대형 플랫폼들은 왜 수 많은 Open API를 제공하는 걸까
우리가 사용하는 페이스북, 네이버, 카카오 등 대형 플랫폼에서는 대부분
"간편 로그인 API 정보를 제공한다"
간편 로그인 API의 목적은 사용자가 여러 사이트를 하나씩 가입하다보면
너무 많은 사이트에 가입해야하는 단점이 있어
누구나 사용하고 있는 대형 플팻폼의 가입정보를 공유함으로써
간편하게 회원가입을 할 수 있도록 설계된 API이다.
만약 카카오톡 간편 로그인 기능으로 여러 사이트를 가입한 상태에서
갑작스럽게?! 카카오톡을 탈퇴하고 싶었다는 마음을 가졌다 가정하자
카카오톡을 탈퇴하는 순간
간편 로그인을 이용해 가입했던 수 많은 사이트 또한 포기해야하는 상황이 발생된다.
즉, 간편 로그인 기능을 제공함으로써 플랫폼 이탈율을 현저히 줄일 수 있기에 제공하는 것이다.
정보를 독점하는것보다는 공유함으로써 더많은 이익을 가져갈 수 있는 생태계가 만들어지고 있고
이러한 과정에서 오픈/ 비오픈 API가 존재하는 것이다.
인터페이스(Interface)
인터페이스(interface)는 컴퓨터 시스템끼리 정보를 교한하는 공유 경계를 의미한다,
터치 스크린과 같은 일부 컴퓨터 하드웨어 장치들은 인터페이스를 통해 데이터를 송수신 할 수 있으며,
마우스나 마이크론 폰가 같은 장치들은 오직 시스템에 데이터를 전송만 하는 인터페이스를 제공한다
인터페이스는 말 그대로 어떤 기계간의 장치끼리 정보를 교환하기 위한 수단이나, 방법을 의미한다.
집에서 TV를 켜기 위해 리모콘을 사용한다.
리모콘은 사전에 TV와 통신하기 위해 TV에 정의된 규격에 의해 어떤 신호를 보낼 수 있도록 만들어진 장치이며
이러한 신호를 서로 주고 받기 위한 방법을 인터페이스라 부를 수 있다. (인터페이스는 광범위하다)
아래의 예시로 더 자세히 알아보자
손님이 레스토랑에서 주문을 한다고 가정하자
손님은 점원이 가져다준 메뉴판을 보면서 메뉴를 고르면
점원은 손님의 주문을 받아 요리사에게 해당 메뉴를 만들어달라고 요청할 것이다.
요리사는 요리를 완성하여 점원에게 건내고 점원은 손님에게 주문받은 메뉴를 가져다 줄 것이다.
여기서 점원의 역할이 곧 API가 하는 역할이라 볼 수 있다.
여기서 요리사가 한국말을 하지 못하는 러시아인 이라는 설정을 추가해보자.
점원은 손님에게 메뉴를 보여주고(랜더딩 된 브라우저)
점원은 손님이 고른 메뉴(요청)받고
어떤메뉴인지 요리사에게 요리사가 알아들을 수 있는 러시아어로(변환) 전달 해준다.
API 는 손님(프로그램)이 주문할 수 있게 메뉴(명력 목록)을 정리하고
주문(명령)을 받으면 요리사(응용프로그램)와 상호작용하여 요청된 메뉴 (명령에 대한 값)을 전달한다.
쉽게 말해 API는 프로그램들이 서로 상호작용하는 것을 도와주는 매개체로 볼 수 있다.
즉, API는 프로그램과 다른 프로그램을 연결해주는 일종의 다리라고도 볼 수 있다.
출처 :
steemit.com/kr/@yahweh87/it-api
728x90'TIL > Django' 카테고리의 다른 글
TIL.64 (Token)_Authentication (0) 2020.12.11 TIL.58 Django Rest Framework_serializer(직렬화) (0) 2020.12.06 TIL.57 null=True 와 blank=True 의 차이(Django) (0) 2020.12.05 TIL.54 Httpie를 이용해 통신해보기(Django, MySQL) (0) 2020.12.02 TIL.50 Django Model 과 ORM 정리 (0) 2020.11.28