드림코딩 by 엘리_what's the meaning of API?
What is API(Application Programming Interface)
프로그래밍이라는 것도 결국 사람이 작성 하기 때문에 우리 일상생활을 잘 이해하면
프로그래밍을 더 잘 이해할 수 있다.
예를들어 키오스크가 내부적으로 어떻게 동작하는 지는 몰라도 인터페이스를 통해서 기계를 쉽게 사용가능하다.
인터페이스가 간단하고 직관적일 수 록 더 좋은 기계라고 말할 수 있다.
그것 처럼 프로그래밍 에서도 API 라는 것이 존재하는데
API는 Application Programming Interface의 약자 이다.
예를들어 서로 다른 하드웨어 부품마다 개발자가 일일이 프로그래밍을 작성 하기 보다는
HAL(hardware abstraction layer_하드웨어 추상화 계층) 이라는 하드웨어 추상화 계층에서
한 번만 display이라는 함수를 이용하면 각기 다른 모니터에 출력을 하거나
각기 다른 하드웨어 부품에 작성을 하는 이런 일들을 쉽게 해주는 것이 생겼다.
이것이 API의 시초이다.
그리고 MacOS와 Windows가 등장하면서 그래픽이 좋은 컴퓨터가 등장하기 시작한다.
이런 각각의 운영체제에서 동작하는 어플리케이션을 만들기 위해서는 운영체제에서 제공하는 API를 이용해서 만들 수 있다.
Mac 이라면 Cocoa API를 Windows 라면 Windows API를 이용해서 어플리케이션을 만들고 버튼을 추가하고 파일에 데이터를 저장하고 읽고 이런 일들을 할 수 있게 된것이다.
그리고 인터넷이 보편적으로 대중화되기 시작하면서 더 이상 물질적으로 케이블이 연결된 세상에서 벗어나서 컴퓨터와 컴퓨터 다양한 기기들이 인터넷을 통해서 의사소통 해나가는 시대가 도입된다.
이때, 다양한 기기에서 서버에 있는 데이터를 읽고 쓰기 위해서는
서버에서 제공하는 Web API들을 이용해서 처리할 수 있다.
네트워크에서 기기들간에 의사소통을 해나가는 규격사항을 HTTP(HypertextnTransfer Protocol) 라고 부른다.
이런 Web API를 어떻게 디자인해서 만들건지 정의하는 것이 있는데
REST(Representational State Transfer)를 보편적으로 많이 사용되어 진다.
REST는 총 4가지로 구성되어 있다. : Post, Get, Put, Delete
새로운 데이터를 만들고, 읽고, 업데이트하고, 삭제할 수 있다.
이렇게 Get을 이용해서 유저에 대한 정보를 요청하면 서버로 부터 유저에 대한 데이터를 JSON 이라는 포맷을 통해서 받아 올 수 있다.
이처럼 서버에서 제공하는 Web API를 통해서 서버에 있는 데이터를 읽어오거나 업데이트 할 수 있다.
그리고 이제 이런 Web API 뿐만 아니라 라이브러리나 프레임워크에서 우리가 이용할 수 있는 클래스나 함수들을 API 라고 부른다. 이런 외부에서 가져오는 라이브러리 뿐만 아니라 프로젝트 내부에서 쓰여지고 있는 클래스나 모듈이 있다면 Calculator에서 제공하는 두가지의 함수를 이용해서
두가지의 인터페이스를 이용해서
두가지의 API 를 이용해서
사용하면되 라고도 말할 수 있다.
이처럼 API는 다양한 분야에서 사용되어지는 단어 이다.
즉 내부의 구현 사항을 잘 숨겨두고 외부에서 사용하는 사람이 필요한 것만 노출해 두고 이것을 인터페이스,
API라고 부른다.
그렇다면 Open API, Public API 는 무엇일까?
회사 내부에서 사용하는 Web API를 외부의 다른 개발자가 이용할 수 있도록 공개적으로 오픈한 것을
Open API 라고 한다.
이런 오픈된 API를 이용해서 많은 개발자들이 독창적이고 여러 어플리케이션을 만들 수 있고
궁극적으로 회사, 서비스 커뮤니티에 많이 기여 하기때문에 많은 회사들에서 Open API를 만들어 둔다.
유용한 Open APIs
* https://github.com/public-apis/public-apis
GitHub - public-apis/public-apis: A collective list of free APIs
A collective list of free APIs. Contribute to public-apis/public-apis development by creating an account on GitHub.
github.com
* https://public-apis.xyz/page/1
Public APIs: A Collection of Public and Free APIs for Development
Get the best collection of public and open APIs like movie APIs, weather APIs, Food APIs, music APIs, games and comics APIs, meme APIs, news API, etc.
public-apis.xyz
* https://developers.giphy.com/
GIPHY Developers
The GIPHY Developer Portal is how you integrate the world's best GIF API into your business, app or project.
developers.giphy.com
* https://developers.kakao.com/
Kakao Developers
카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.
developers.kakao.com