# API : What is API?

API란 무엇일까?
위키(https://ko.wikipedia.org/wiki/API)에서는 다음과 같이 설명하고 있다.

API (Application Programming Interface)

- 응용 프로그램 프로그래밍 인터페이스 (어째 한글이 더 복잡하다)
- 응용 프로그램(어플리케이션)에서 사용할 수 있도록, 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스
- 주로 파일 제어, 창 제어, 화상 처리, 문자 제어 등의 인터페이스를 제공한다.

조금 더 쉽게 말하면, 
"운영체제 또는 프로그래밍 언어가 제공하는 특정 기능을 수행할 수 있는 함수"
라고 이해하면 더 쉽게 받아들여지지 않을까 생각한다.

이쯤되면 인터페이스(Interface)는 무엇일까 하는 궁금증도 생기기 마련이다.

인터페이스는 물건을 조작하기 위한 디자인이라고 설명되는데, 이 때 디자인이란 '키보드, 마우스, 리모콘 등의 물리적인 형태' 뿐만 아니라 '동작 인식, 터치 스크린 등 해당기기를 작동시키는 방식' 등의 포괄적인 의미를 갖고 있다.

우리가 흔히 사용하는 '키보드, 터치스크린' 등은 사람을 위한 인터페이스라고 볼 수 있다. 
그렇다면 프로그램을 위한 인터페이스는 무엇일까? 
하나의 프로그램이 다른 프로그램에 영향을 미치는, 또는 하나의 프로그램이 다른 프로그램을 사용하는 등의 동작을 의미할 것이다. 이것이 바로 API다.

정리하자면, API란 '프로그램을 위한 인터페이스'를 의미한다.

만약 환율을 확인할 수 있는 홈페이지가 있다고 가정하자.
특정 사용자가 이 홈페이지를 이용하여 오늘의 달러 시세를 확인하고 싶다면

1. 사파리를 들어가서(크롬이나 익스플로러도 가능하다)
2. 홈페이지로 들어가서
3. 오늘의 날짜로 들어가서
4. 미국 달러를 선택하고
5. 확인한다

만약 어떠한 개발자가 자신이 만든 프로그램에서 위와 같은 동작을 수행하길 원한다고 가정하자. 이 때 개발자는 API를 사용하게 된다. (단, 환율을 확인하는 홈페이지에서 API를 제공하는 경우)

1. 개발한 프로그램에서 해당 API를 호출한다. 쉽게 말하면 프로그램 내부에 API를 불러오는 문구를 작성한다.
2. 해당 API에서 "미국", "달러" 등의 파라미터를 전달하여 원하는 정보를 가져온다. 이 또한 파라미터의 구성에 따라 조금씩 달라질 수 있다.
3. 개발한 프로그램에서 API를 통해 얻어온 결과를 출력한다.



결국 API란 '프로그램간 통신(커뮤니케이션)을 담당하는 기능' 을 의미한다.
API를 이용하여 특정 프로그램 또는 홈페이지 등의 기능을 다른 곳에서도 사용할 수 있게 된다. 
실제 대부분(아니 모두라고 해도 무방하다)의 프로그램 또는 홈페이지에서 API를 사용하고 있는 것을 볼 수 있다. 특정 모바일 게임에서 퀘스트를 완료할 때마다 연결된 페이스북 아이디로 그 소식을 포스팅할 수 있다. 또는 카카오톡이나 페이스북 친구에게 게임 초대장을 보낼 수도 있다. 실제로는 게임과 전혀 무관한(광고나 기타 계약을 제외한다면) 프로그램에서 API를 호출함으로써 위와 같은 특정 기능을 제공할 수 있는 것이다.

참고 사이트
https://m.blog.naver.com/PostView.nhn?blogId=azure0777&logNo=220749852024&proxyReferer=https%3A%2F%2Fwww.google.co.kr%2F
https://ko.wikipedia.org/wiki/API

댓글