API (Application Programming Interface) : 소프트웨어 간 데이터를 주고받을 수 있도록 하는 인터페이스
프로그램과 프로그램이 서로 소통하는 방법을 제공
+) 인터페이스 (Interface) : 두 개의 시스템, 장치, 소프트웨어 또는 개체가 서로 소통할 수 있도록 하는 연결 지점!
무언가와 또 다른 무언가를 연결하는 교각역할
ex) 게임 컨트롤러 (인간과 게임기가 직접 소통할 수 없지만 컨트롤러를 이용해 소통 가능)
소프트웨어 인터페이스로는 API, UI 등이 있고 하드웨어 인터페이스로는 USB 포트, HDMI 케이블, 블루투스 등이 존재.
프로그래밍 상에서는 객체 지향 프로그래밍에서 interface 키워드로도 사용됨.
interface Animal {
void makeSound(); // 이 메서드는 반드시 구현해야 함
}
class Dog implements Animal {
public void makeSound(){
System.out.println("bark!");
}
}
API의 기능 쉽게 이해하기
클라이언트( 유저 ) : 원하는 기능 선택 및 주문 -> 웨이터 (API) : 주방(서버)에 내용 전달 -> 주방(서버): 음식 조리 후 웨이터 (API) 에 전달 -> 웨이터(API) : 클라이언트에 요리 가져다줌
API 예시
https://api.openweathermap.org/data/2.5/weather?q=Seoul&appid=API_KEY&units=metric
q=Seoul : 서울 날씨 정보 요청
appid = API_KEY : API 사용을 위한 키 (인증)
units = metric -> 섭씨 단위로 변환
요청을 보내면 API가 JSON 형태의 날씨 정보를 반환.
+) JSON (JavaScript Object Notation) : 데이터를 저장하고 교환하기 위한 가볍고 읽기 쉬운 데이터 형식.
<JSON의 기본 형식> : 키(key)와 값 (value)의 쌍
ex) {
"name" : "Alice",
"age": 25,
"city" : "Seoul" }
쉽게 읽을 수 있고 데이터 교환에 최적화
<JSON이 많이 쓰이는 이유>
- 가볍고 빠름
- 사람이 읽기 쉬움
- 프로그래밍 언어와 뛰어난 호환성
- 데이터 구조 유지 가능
API의 종류
-Open API -> 말 그대로 모두에게 오픈되어 있는 공개 API (ex. Openweather, Google maps)
-Private API -> 특정 기업 내부에서만 사용하는 API (ex. 은행 시스템 API)
-REST API -> 웹에서 가장 많이 사용하는 API 방식 (JSON 데이터 교환)
-GraphQL API -> 필요한 데이터만 요청할 수 있는 API