본문 바로가기

CS

[CS] API란?

API(Application Programming Interface)란?

프로그램 간 상호 작용을 가능하게 하는 인터페이스(중간 매개체)이다. 쉽게 말해, 프로그램이나 서비스가 다른 프로그램과 데이터를 정확하게 주고받을 수 있도록 정해진 규칙과 방법을 제공하는 것입니다. 

 


 

API의 기본 개념

API는 소프트웨어나 서비스가 서로 데이터를 주고받을 수 있도록 도와주는 규칙입니다.

 

출처 : Postman

 

예를 들어, 우리가 스마트폰에서 날씨 앱을 실행하면,

1. 앱은 날씨 정보를 제공하는 서버에 요청을 보냅니다. (Reqeust)

2. 서버는 요청을 처리한 후 현재 날씨 정보를 응답으로 보냅니다. (Response)

이 과정에서 앱과 서버가 서로 정보를 주고받는 방식이 API입니다.

 

※ 설명이 추상적이기 때문에, 추가 설명은 아래의 REST API를 통해서 설명한다.


 

API의 종류

1. 웹 API (REST API & SOAP API)

  • 웹 서비스를 제공하는 API로, HTTP 요청을 통해 데이터를 주고받는 방식이다.
  • 웹 API를 사용하면 다른 웹사이트나 앱에서도 데이터를 가져오거나 보낼 수 있다.

 

📌 REST API (대표적인 웹 API 방식)

  • REST(Representational State Transfer) 원칙을 따르는 API입니다.
  • HTTP 요청 메서드를 활용하여 데이터를 주고받는다.
    • GET → 데이터 조회
    • POST → 데이터 생성
    • PUT → 데이터 수정
    • DELETE → 데이터 삭제
GET https://api.example.com/users/1  → ID가 1인 사용자 정보 조회 요청
POST https://api.example.com/users   → 새로운 사용자 등록 요청

 

 

 

📌 SOAP API

 

  • REST보다 복잡한 구조로, XML 형식(마크언 언어, 태그 사용)을 사용하여 데이터를 주고받습니다.
  • 은행, 금융 서비스와 같은 보안이 중요한 서비스에서 사용됩니다.

 

2. 운영체제 API

 

  • 운영체제(OS)가 제공하는 기능을 활용할 수 있도록 만든 API입니다.
  • 예: Windows API, macOS API, Linux API 등

 

3. 라이브러리 API

 

  • 특정 프로그래밍 언어나 프레임워크에서 제공하는 기능을 사용할 수 있도록 만든 API입니다.
  • 예: TensorFlow API, Mediapipe API

 

4. 하드웨어 API

  • 소프트웨어가 하드웨어 기능을 제어할 수 있도록 제공하는 API입니다.
  • 예: 카메라 API, GPS API, Bluetooth API 등

 


 

API의 동작 방식 (REST API 예제)

예를 들어, 사용자가 날씨 정보를 요청하는 경우

 

1. 날씨 서버는 미리 특정 URL에 대한 처리 방법을 코드로 설정(API)해 놓았다. 

app.get('/seoul', function (req, res) {		-> 해당 URL로 GET 요청이 들어올 시 실행
	서울 날씨 전달~
}

app.get('/busan/', function (req, res) {	-> 해당 URL로 GET 요청이 들어올 시 실행
	부산 날씨 전달~
}

... (도쿄 날씨는 포함x)

만약, 미리 설정해놓지 않은 URL로 요청을 보낸 경우 서버는 해당 요청에 대해 응답을 할 수 없게 된다.

  • GET https:://api.weather.com/tokyo -> 서버는 해당 요청에 대한 응답을 하지 못함.

 

 

2. 사용자가 날씨 앱을 실행하고 "서울 날씨 보기" 버튼을 클릭함

 

 

 

3. 날씨 앱이 API 요청을 보냄 (REST API 규칙에 따라 : HTTP 요청 메서드 + URL 형태)

GET https://api.weather.com/seoul

 

 

 

 

4. 해당 요청을 받아 처리한 후 응답을 보냄

{
  "city": "Seoul",
  "temperature": "15°C",
  "condition": "Cloudy"
}

JSON, XML 형태로 받을 수 있다. (위 코드는 JSON 형태로 받은 것이다.)

 

 

5. 날씨 앱이 받은 데이터를 화면에 표시함 → 서울: 15°C, 흐림

 

 

 

6. 정리

쉽게 설명해서 가게 손님(Client)이 가게 운영자(Server)한테 주문 할 때, 메뉴판(API) 역할이라 보면 된다. 손님은 메뉴판에 없는 메뉴를 시키면 가게에서는 음식(응답)을 제공할 수 없는 것이고 해당 메뉴판에 있는 음식을 주문하면 음식(응답)을 제공받을 수 있는 것이다.

 


 

API의 장점

재사용성 → 한 번 만든 API를 여러 프로그램에서 활용할 수 있음
확장성 → 새로운 기능을 추가할 때 API를 활용하여 쉽게 확장 가능
보안성 → API를 통해서만 특정 데이터에 접근하도록 제한 가능
표준화 → 일관된 규칙을 제공하여 개발이 쉬워짐

 


 

API 사용처

  • 로그인 시스템: 구글, 페이스북 로그인 API
  • 결제 시스템: 카카오페이, 페이팔 API
  • 지도 서비스: 구글 지도 API
  • 음성 인식: 구글 음성 인식 API
  • 이미지 처리: OpenCV, Mediapipe API