기타

API

wonjjong 2018. 9. 3. 23:06

API


API란?

API란 Application Programming Interface의 약어입니다. 인터페이스란 간단하게 프로그램과 프로그램, 또는 장치와 프로그램, 운영체제와 프로그램 등 서로 통신이 필요한 것들을 중간에서 이어주는 역할을 해줍니다. 해석해보자면 어플리케이션(응용 프로그램)을 프로그래밍하는데 필요한 인터페이스(매개체)를 뜻합니다. 

API를 사용하면 현재 개발 중인 프로그램에서 구현해야 할 어떤 기능이 있을 때 해당하는 기능을 직접 구현할 필요 없이 가져와 사용할 수 있고, 또는 API를 통해 다른 프로그램들(예를 들면 DBMS, 운영체제) 하고 상호작용을 할 수 있습니다.  



API와 라이브러리의 차이

API와 라이브러리를 굉장히 비슷하다고 느끼실 수 있는데요. 저도 굉장히 많이 찾아봤는데 개발자분들 사이에서도 의견이 좀 분분한 것 같더라구요. 따라서 제가 설명드리는 API와 라이브러리의 차이는 정답이 아닐 수도 있습니다.


API는 라이브러리를 포함하는 좀 더 광범위한 개념이라고 할 수 있습니다. 라이브러리는 단순하게 특정한 목적을 가지고 만들어져 다양한 프로젝트에서 사용할 수 있게 만들어진 함수, 객체, 데이터 등을 모아놓은 집합체라고 할 수 있습니다.


API는 다른 프로그램들과 통신할 때 이런 라이브러리를 직접적으로 접근하지 않고 통신하기 위해 제공되는 인터페이스입니다. 우리가 구현하려는 기능을 외부에서 가져와 사용하려고 할 때 이것이 어떻게 구현되어 있는지는 알 필요 없이 구체적인 사양(specification)만을 제공해줘서 어떻게 사용하면 된다를 알려줍니다. 이를 통해 우리는 복잡하게 어떻게 구현되어 있는지 알 필요가 없어 편리하고, 또한 제공해주는 쪽은 통신에 필요한 최소한의 기능(또는 제한적인 접근?) 만을 제공해주기 때문에 내부의 모든 구현들을 노출할 필요가 없습니다. 그렇기 때문에 API를 제공할 때는 보통 API documentation 또한 제공해서 이것은 어떤 기능을 하고, 어떻게 사용해야 되는지에 대한 설명을 해줍니다. 


결론적으로 제가 API가 라이브러리를 포함하는 광범위한 개념이라고 설명드린 이유는 우리가 API를 사용하면 그 API는 라이브러리를 통해 그 기능을 제공해주기 때문입니다.




간단한 예를 몇 가지 들면


자바에서 입출력할 때 우리는 System 클래스 내부의 out 객체에 있는 println()라는 출력 메소드를 자주 사용합니다. 우리는 그냥 이 메소드를 사용해서 우리가 출력 해야할 것을 출력하면 됩니다. 이것이 어떤 방식으로 구현되어 있는지는 알 필요가 없죠. 


또한 API를 라이브러리와 같다고 할 수 없는 이유 중 하나는 인터넷을 통해 원격으로 제공해주는 API들이 그 사례입니다. 예를 들면 구글 API는 직접적으로 로컬에서 사용할 수 있는 라이브러리를 제공해주지 않고 우리가 HTTP를 통해 요청을 하면 그에 대한 처리를 하고 응답 해주는 형태로 필요한 기능을 제공해주는 형태입니다. 요청하고 응답해주는 이 과정은 API를 통해서 제공되지만 이 과정에서 우리는 직접 로컬에서 라이브러리를 다운받아 사용하지 않습니다. 때문에 API와 라이브러리는 같다고 할 수 없습니다.


정말 간단하게는 식당에서 우리가 메뉴판(API)을 보고 주문(요청) 하면 주방(라이브러리)에서 음식을 해서 가져다 준다(응답) 라고 생각하시면 될 것 같습니다. 제가 너무 어렵게 설명드린 것 같은데 도움이 되셨으면 좋겠습니다.  




'기타' 카테고리의 다른 글

visual studio 폰트 변경, 추가하기  (0) 2019.12.24
Visual Studio Code 단축키 정리  (0) 2019.09.21
라이브러리  (0) 2018.08.26