정말 무수히도 많이 들던 API는 과연 무엇인가.
프로그래밍공부를 시작하면서 지금까지 API라는 단어를 정말 많이 들었다.
하지만 막상 API에 대해 설명을 하라고 하면 무엇인지 대충(?)은 짐작이 가지만, 제대로 설명하기가 힘들었다..
그래서 이참에 API에 대해 제대로 알고싶어 인터넷 검색, 책, 영상 등을 찾아보았다.
Interface
먼저 API의 I에 해당하는 Interface에 대해 간단하게 설명을 하고 시작하겠다.
사전적 정의 : 두 물체, 공간, 단계 등의 공통 접점면 / 서로 다른 두 시스템, 장치, 소프트웨어 따위를 서로 이어주는 부분 또는 그런 접속 장치
--> 뭔가 두개(사람 - 사람[ex:채팅창], 사람 - 기계[ex:키보드], 기계 - 기계[ex:모니터 포트])의 어떤 걸 연결시켜주고 이어주는 것이라는 느낌!
우리가 가끔 사용하는 자판기를 한번 살펴보자.
자판기가 내부적으로 어떻게 동작하는지는 모르지만 자판기를 사용하기 위해 종류, 가격, 버튼 등이 있는 자판기 표면을 보고 원하는 제품을 골라 구매할 수 있다.
이렇게 사용자 -- 자판기 라는 서로 다른 두 존재를 이어주는 부분인 '자판기 표면'을 인터페이스라고 할 수 있다.
다른 말로, 내부의 구현사항을 잘 숨겨두고 외부에서 사용하는 사람이 필요한것만 노출해둔 조작장치
그리고 이런 인터페이스가 간단하고 직관적일수록 더 좋은 기계라고 말할 수 있다.
요즘 식당에서 주문시 사용하는 키오스크를 한번 생각해보자.
키오스크를 사용할때 어려움은 없지만 유독 조작하기가 어려운 키오스크 인터페이스가 있다. 어디에 뭐가 있는지 직관적이지 않고 한번에 눈에 들어오지 않고.. 그런건 인터페이스가 좋지 않은 예이다.
API
자, 이제 API에 대해 이야기해보겠다.
API : Application Programming Interface
여러 설명들을 보고 API에 대해 정리해보자면,
우리가 흔히 말하는 API는 넓은 의미의 API가 있고, 좁은 의미의 API가 있다.
1. 넓은 의미의 API :
Web API뿐만 아니라 라이브러리나 프레임워크에서 우리가 이용할 수 있는 클래스나 함수들까지 통틀어서 의미한다.
예를 들면,
Node.js에는 readFile이라는 함수가 존재한다. (참고로, 이 함수는 로컬에 존재하는 파일을 읽어오는 함수)
하지만 우리는 처음에는 readFile 함수가 존재하는지 모른다.
그 상태에서 파일을 읽어오는 기능을 추가하고 싶을 때, 검색을 하여 readFile함수를 이용한다.
Node.js를 만든 개발자들이 이용자들에게 파일을 읽을 때는 readFile 함수(API)를 사용하라고 사용설명서(API문서)를 통해 말하고 있다.
우리는 이 함수가 어떤 원리로 동작하는지 모른다(그리고, 사실 알 필요도 없다.)
readFile함수(자판기 표면, 인터페이스, API)를 이용하여 파일을 읽어오는 기능(자판기 이용)을 이용할 수 있는 것.
이러한 interface를 실행시킴으로써 application을 만들 수 있다.
이렇게 Application을 Programming 하기위해 제공되는 Interface를 API라고 한다.
어떤 프로그래밍 언어를 만나거나 그 언어가 가지고 있는 조작장치들이 궁금하다면 API를 찾으면 된다.
2. 좁은 의미의 API :
좁은의미의 API는 Web API를 의미한다.
1990년도 인터넷이 보편적으로 대중화되기 시작하면서 더이상 물질적으로 케이블이 연결된 세상에서 벗어나서 컴퓨터와 컴퓨터 다양한 기기들이 인터넷을 통해서 의사소통 해나가는 시대가 도입된다.
다양한 기기들이 서로 데이터를 요청하고 받는 과정에서 클라이언트는 서버가 어떻게 구성되어있는지 모른다.
그래서 클라이언트가 서버를 잘 활용할 수 있도록 인터페이스를 제공해줘야한다.
예를 들어보자.
손님(클라이언트)이 스타벅스(서버)에 가서 음료를 주문하려는데 어떠한 메뉴가 있는지 전혀 적혀있지 않다.
그럼 손님 입장에서는 어떤게 있는지 알 수가 없다. (그냥 맛있는 커피를 달라고 할수도 없고...)
메뉴판(API 문서)에 있는 메뉴(API)를 주문해야 그에 따른 음료를 제조해서 제공받을 수 있다.
그러한 메뉴들, 주문 방법이 적혀있는 메뉴판을 API 문서,
음료 종류들을 API로 보면 되겠다.
그리고, 클라이언트-서버간에 의사소통하는 규격사항(형식)을 HTTP(s)라고 부른다.
https://lion284.tistory.com/58
소프트웨어들이 서로 대화할 때 사용되는 수단.
오늘날 우리가 컴퓨터나 스마트폰으로 사용하는 대다수의 서비스들은 여러 소프트웨어들의 조합으로 되어있다.
유튜브를 한번 생각해보자.
유튜브로 시청할 수 있는 수단으로 : 브라우저를 통해 볼 수 있는 웹사이트, iOS앱, 안드로이드 앱.
이 기기들 안에서 유튜브 영상을 보여주는 앱, 웹사이트 모두가 소프트웨어.
폰안에 설치된 유튜브애벵 세상의 모든 유튜브 영상들이 들어있을까?
no. 이 영상들은 '서버'라는 컴퓨터에 저장되어 있다.
각 기기들은 이 서버로부터 영상들과 관련된 데이터를 받아와서 재생.
서버에는 마치 웨어터처럼, 다른 소프트웨어의 주문을 받아 '서빙'을 하는 소프트웨어가 설치되어 실행되고 있다.
폰에서 유튜브앱을 켜면 유튜브앱은 서버에 설치된 이 소프트웨어에게 '최신 컨텐츠들의 목록을 보내달라'는 요청을 보낸다.
이에 대한 응답으로 서버에서는 영상들의 정보들을 보내준다.
Open API
그렇다면 open API는 무엇일까?
회사 내부 서버Web API를 외부의 다른 개발자들이 이용할 수 있도록 공개적으로 오픈한 것을 Open API라고 한다.
이런 공개된 API를 통해서 많은 개발자들이 독창적이고 재밌는 어플리케이션을 만들 수 있다.
나도 프로젝트 작업 때 카카오 Open API를 사용하였다.
참고영상
드림코딩 엘리 | https://www.youtube.com/watch?v=ogT267HvNuQ&t=419s
퉁통코딩 | https://www.youtube.com/watch?v=fwpbLEXL3pU
https://www.youtube.com/watch?v=RI1LcuNgNj4&t=420s
'Today I Learn' 카테고리의 다른 글
[2023.09.22.금] (0) | 2023.09.22 |
---|---|
[TIL] 2022. 07. 26. TUE. 1차 프로젝트 최종 마무리 및 회고 (0) | 2022.07.27 |
[29주차] 2021. 11. 23. 화. (0) | 2021.11.24 |
[28주차] 2021. 11. 17. 수. (0) | 2021.11.18 |
[26주차] 2021. 11. 04. 목. (0) | 2021.11.05 |