IT 기획의 길

API란? 본문

IT 인프라/기타 IT 인프라 지식

API란?

완벽하기 쉽지 않지만 완벽해지려고 노력해야 한다 2021. 10. 12. 17:58

API는 프로그래밍을 배우다 보면 언젠가는 듣게 되는 단어이며 프로그래밍을 배우지 않더라도 IT쪽에서 일을 하면 이곳저곳에서 들리는 단어인데, 정확한 뜻은 잘 모르는 경우가 많습니다.

API는 Application Programming Interface의 약자입니다.

어플리케이션, 프로그래밍, 인터페이스.. 각각은 많이 들어본 단어들이죠?

  1. Interface는 물건을 조작하기 위한 디자인을 뜻합니다. 이 디자인이라는 것은 키보드, 마우스, 리모콘처럼 단순히 물리인 형태만 뜻하는 것이 아니라 동작인식, 터치스크린처럼 해당기기를 작동하는 방식까지 포함합니다. 손가락 두개로 터치한 후에 벌려서 화면 확대, 혹은 더블 탭해서 화면 확대 등등이죠.
  2. Programming interface는 human interface의 반대 개념으로 생각하면 되는데, 위에서 예를 든 키보드, 터치스크린 등은 사람을 위한 인터페이스입니다. API는 한 프로그램이 다른 프로그램을 이용할 때 쓰는 인터페이스로 기계가 이해하기 쉽게 입출력이 데이터로 이루어 집니다.
  3. 마지막으로 남은 Application은 응용프로그램, 즉 프로그램입니다. 게임 앱, 채팅 앱할 때 앱(app)이 이것의 약자입니다.

즉, Application의 Programming을 위한 Interface라고 할 수 있는데 가장 중요한 개념은 API는 사람을 위한 인터페이스가 아니라 프로그램을 위한 인터페이스라는 것입니다.

날씨를 확인할 수 있는 사이트를 예로 들어 사람이 이 싸이트를 사용해 날씨를 확인하려면

웹브라우저 실행 > 사이트주소 입력 > 지역및 날짜 입력 > 날씨 확인

의 과정을 거쳐야 합니다.

하지만 내가 만드는 프로그램이 날씨를 확인하고 싶다면 위의 사람의 방식은 비효율적입니다. (url을 찾아 페이지를 열고 웹페이지를 해석하고 form에 값을 입력해서 최종 페이지에서 원하는 정보를 읽는 프로그램을 짠다고 생각해 보세요. 게다가 해당 웹사이트가 업데이트 되는 경우에는...)

해당 사이트가 API를 제공한다면 내 프로그램이 해당 API를 사용해 쉽게 정보를 가져올 수 있습니다.

API 에 날짜/지역 정보를 전달 > API에서 날씨정보를 응답

실제 API의 예를 살펴봅시다.

http://pokeapi.co/api/v2/pokemon/pikachu

위 API는 포켓몬스터 게임의 피카츄라는 캐릭터의 정보를 보내주는 API입니다. 뒤의 pikachu를 다른 포켓몬이름(영문으로) 입력하거나 숫자를 입력하면 해당 번호에 해당하는 포켓몬의 정보를 리턴합니다. (날씨 API도 위와 같은 방식인데, 공짜 API가 없어서 여기에 예로 들지 못했습니다.)

API는 쉽게 말해 프로그램간 커뮤니케이션을 담당하는 기능입니다. 위의 예제에서는 단순히 자료 요청 -> 자료 응답이지만 API는 해당 프로그램의 기능을 다른 프로그램이 쓸 수 있게 하는 것이 목적으로 아래와 같은 좀 더 복잡한 기능들을 수행할 수도 있습니다.

- 스마트폰에 다운 받은 게임에서 내 페이스북 계정에 업적 달성 글을 남김
> 게임이 페이스북API를 사용해 글작성 요청

- 카카오톡에 게임 친구 추가 요청옴
> 게임이 카카오톡 API를 사용해 친구추가 메세지를 보낼 것을 요청