개발천재

API와 REST API 본문

개발 준비/기타

API와 REST API

세리블리 2025. 5. 8. 17:37
728x90
반응형

API (Application Programming Interface)

API(응용 프로그램 인터페이스)는 소프트웨어 또는 애플리케이션 간의 상호 작용을 가능하게 하는 인터페이스이다. 쉽게 말해, 두 시스템이 서로 정보를 주고받을 수 있도록 정해진 규칙(프로토콜)과 방식(메서드)을 제공하는 것이다.

 

쉽게 말해, API는 서로 다른 프로그램이나 서비스가 정보를 주고받을 수 있도록 돕는 메뉴판 같은 역할을 한다. 예를 들어, 음식점에서 메뉴를 보고 주문하면 주방에서 음식을 만들어 가져다주는 것처럼, API를 통해 앱이나 웹사이트가 다른 서비스(예: 날씨 정보, 결제 시스템)와 소통할 수 있다. 개발자는 API를 사용해 원하는 기능을 쉽게 추가할 수 있고, 직접 복잡한 시스템을 만들 필요 없이 기존 서비스를 활용할 수 있다.

 

 

API의 역할

애플리케이션 간 데이터 송수신

API는 서로 다른 애플리케이션이 데이터를 주고받을 수 있게 해주는 통신 수단이다. 예를 들어, 모바일 앱이 서버로부터 사용자 정보를 받아오거나 저장할 때 API를 통해 데이터를 송수신한다.

 

시스템 간 기능 제공 및 호출

API는 한 시스템의 기능을 다른 시스템이 사용할 수 있도록 해준다. 예를 들어, 어떤 서비스가 외부에서 제공하는 번역 기능을 필요로 할 때 해당 API를 호출해 번역 결과를 받아올 수 있다.

 

서비스 연동 (예: 카카오 로그인, 결제 시스템 등)

API는 서로 다른 서비스를 하나로 연동하는 역할도 한다. 카카오 로그인이나 다양한 결제 시스템처럼, 외부 플랫폼과 연동하여 로그인, 결제 등의 기능을 쉽게 구현할 수 있게 도와준다.

 

 

API의 종류

API는 "누가 사용할 수 있느냐"에 따라 오픈/프라이빗/파트너 API로 나누고, "어떻게 통신하느냐"에 따라 REST, SOAP, GraphQL, Webhook, Streaming API 등으로 나눌 수 있다.

 

오픈 API

오픈 API는 누구나 자유롭게 사용할 수 있도록 공개된 API입니다. 개발자는 별도의 제약 없이 문서에 따라 API를 호출하여 데이터를 활용할 수 있습니다. 예를 들어, 날씨 정보를 알려주는 날씨 API나 위치를 지도에 표시해주는 구글 지도 API 등이 여기에 해당합니다.

 

프라이빗 API

프라이빗 API는 특정 기업이나 서비스 내부에서만 사용하는 API입니다. 외부에서는 접근할 수 없으며, 내부 시스템 간의 데이터 연동이나 기능 호출에 주로 사용됩니다. 예를 들어, 회사 내부 시스템 간 회원 정보나 결제 정보를 주고받는 API가 이에 해당합니다.

 

파트너 API

파트너 API는 일반에게는 공개하지 않고, 특정 파트너사나 협력 업체에만 제공하는 API입니다. 보안이나 비즈니스 이유로 제한된 범위 내에서만 사용되며, 보통 계약이나 인증 절차를 거쳐 사용하게 됩니다. 예를 들어, 제휴된 쇼핑몰이나 결제 업체가 특정 기능을 연동할 수 있도록 제공받는 API가 이에 해당합니다.

 


 

REST API

가장 많이 쓰이는 API 방식으로, HTTP 프로토콜을 기반으로 자원(Resource)을 URI로 표현하고, CRUD 작업을 HTTP 메서드(GET, POST, PUT, DELETE 등)로 수행한다.

예: /users/1 → 1번 유저 정보 요청.

 

SOAP API

XML 기반의 메시지를 사용하여 통신하는 API다. REST보다 무겁고 복잡하지만, 보안이나 트랜잭션 처리가 중요한 기업 시스템에서 사용되기도 한다.

 

GraphQL API

Facebook이 개발한 API 형태로, 필요한 데이터만 정확히 요청할 수 있어 효율적이다. 하나의 요청으로 여러 리소스를 한번에 가져올 수 있어 프론트엔드 개발자에게 인기가 많다.

 

Webhooks

API는 일반적으로 클라이언트가 서버에 요청을 보내는 방식이지만, Webhook은 서버가 클라이언트에게 자동으로 알림을 보내주는 방식이다.

예: 결제가 완료되면 자동으로 알림을 보내주는 Stripe Webhook.

 

Streaming API

실시간 데이터 스트리밍을 제공하는 API다. 예를 들어, 트위터의 Streaming API는 실시간으로 트윗을 받아올 수 있게 해준다.

 

 


 

REST API 

REST API(Representational State Transfer API)는 REST 아키텍처 스타일을 따르는 API를 의미한다. REST는 웹에서 데이터를 주고받는 규칙을 정의한 방식이며, 이를 기반으로 만든 API를 REST API라고 한다.

 

다시 말해 REST API는 웹에서 데이터를 주고받는 규칙과 방법을 정해놓은 약속이다. 마치 택배 시스템처럼, 주소(URI)를 이용해 물건(데이터)을 보내고, GET(조회), POST(추가), PUT(수정), DELETE(삭제) 같은 정해진 방법으로 요청하면 서버가 처리한다. 예를 들어, /users에 GET 요청을 보내면 사용자 목록을 받고, POST 요청을 보내면 새 사용자를 추가할 수 있다. 이렇게 REST API를 사용하면 웹사이트나 앱이 서버와 쉽게 소통할 수 있다.

 

 

REST API의 특징

  • 클라이언트-서버 구조: 클라이언트와 서버가 분리되어 있어 서로 독립적으로 동작
  • 무상태성 (Stateless): 요청 간 상태를 저장하지 않으며, 요청마다 필요한 정보를 포함해야 함
  • 캐시 가능(Cacheable): 클라이언트는 응답을 캐싱하여 성능을 향상 가능
  • 계층적 구조: API 서버와 데이터베이스 서버 등을 계층적으로 분리 가능
  • 일관된 인터페이스: URI를 이용한 리소스 식별과 표준 HTTP 메서드 사용

 

 

REST API에서 사용하는 HTTP 메서드

HTTP  메서드 기능 예제 (URL)
GET 데이터를 조회 /users (모든 사용자 조회)
POST 데이터를 생성 /users (새 사용자 생성)
PUT 데이터를 전체 수정 /users/1 (ID가 1인 사용자 전체 수정)
PATCH 데이터를 부분 수정 /users/1 (ID가 1인 사용자 일부 수정)
DELETE 데이터를 삭제 /users/1 (ID가 1인 사용자 삭제)



API vs REST API 차이점

구분  API REST API
개념 소프트웨어 간 통신 인터페이스 REST 원칙을 따르는 API
방식 다양한 방식 (SOAP, RPC 등) HTTP 프로토콜을 기반으로 작동
데이터 형식 XML, JSON, 텍스트 등 다양 주로 JSON 형식 사용
URI 사용 필수 아님 리소스를 URI로 명확하게 식별


REST API는 API의 한 종류이며, 웹 서비스에서 가장 많이 사용하는 방식 중 하나이다. RESTful한 설계를 따르면 유지보수와 확장성이 뛰어나기 때문에 개발자들이 선호한다.

 

REST API를 사용하는 이유

REST API는 간결하고 직관적인 URL을 통해 자원에 접근할 수 있으며, HTTP 프로토콜을 그대로 활용하므로 별도의 기술 없이도 쉽게 사용할 수 있다. 또한, 데이터 교환에 가볍고 처리 속도가 빠른 JSON 형식을 사용하여 효율적이며, 클라이언트와 서버를 명확히 분리하는 구조로 개발과 유지보수가 용이하다. 이러한 이유로 REST API는 웹과 모바일 애플리케이션에서 널리 사용되고 있다.

 

간결하고 직관적인 URL

REST API는 자원을 URI(주소)로 표현하므로, URL 구조가 간단하고 이해하기 쉽다. 예를 들어, /users/1은 1번 사용자를 의미해 누구나 URL만 보고도 어떤 데이터를 요청하는지 쉽게 알 수 있다.

GET /users → 모든 사용자 목록 요청
GET /users/1 → ID가 1인 사용자 정보 요청
POST /users → 새로운 사용자 생성
PUT /users/1 → ID가 1인 사용자 정보 수정
DELETE /users/1 → ID가 1인 사용자 삭제

 


HTTP 프로토콜을 그대로 사용하여 추가적인 기술 없이 활용 가능

REST는 별도의 복잡한 프로토콜 없이, 기존의 HTTP 메서드(GET, POST, PUT, DELETE 등)를 그대로 사용한다. 덕분에 웹 개발자가 별도의 학습 없이도 쉽게 사용할 수 있고, 다양한 도구와 잘 호환된다.

GET /products/123 HTTP/1.1
Host: api.example.com

 

 

JSON 기반 데이터 교환으로 가볍고 빠름

REST API는 대부분의 경우 데이터를 JSON 형식으로 주고받기 때문에 XML보다 더 가볍고 처리 속도도 빠릅니다. 특히 모바일이나 프론트엔드 개발에서는 JSON이 가독성과 효율성 면에서 선호됩니다.

// 요청 예시 (POST /users):
{
  "username": "johndoe",
  "email": "john@example.com"
}

// 응답 예시:
{
  "id": 101,
  "username": "johndoe",
  "email": "john@example.com",
  "created_at": "2025-04-23T10:00:00Z"
}

 

 

클라이언트-서버 구조를 명확하게 분리하여 유지보수 용이
REST는 클라이언트(프론트엔드)와 서버(백엔드)의 역할을 명확히 나눈다. 서버는 데이터를 제공하고, 클라이언트는 이를 활용해 UI를 구성하기 때문에 서로 독립적으로 개발하거나 유지보수하기 쉬워진다.

프론트엔드(React)는 GET /products로 서버에 상품 목록을 요청
백엔드(Spring, Express 등)는 DB에서 상품 목록을 조회해 JSON으로 응답
프론트엔드는 받은 데이터를 화면에 표시

 

반응형

'개발 준비 > 기타' 카테고리의 다른 글

Get방식 Post방식  (2) 2025.02.20
Query string과 Path Variable  (0) 2025.02.06
CORS(Cross-Origin Resource Sharing)  (0) 2025.02.05
쿠키(cookies)와 세션(session)  (0) 2025.02.03