API(Application Programming Interface)는 응용 프로그램 간의 상호 작용을 가능하게 하는 인터페이스입니다.
소프트웨어, 웹 서비스, 운영체제 등이 서로 데이터를 주고받을 수 있도록 돕는 역할을 합니다.
API는 소프트웨어 컴포넌트 간의 통신을 돕는 매개체로, 특정 기능을 수행하기 위한 규칙과 도구의 집합입니다.
쉽게 말해, 프로그램이 다른 프로그램의 기능을 사용할 수 있도록 미리 정의된 방법을 제공하는 것입니다.
API는 요청(Request) 과 응답(Response) 을 통해 동작합니다.
예제 : 사용자의 정보를 조회하는 API 호출
클라이언트 → (요청) → 서버
GET /users/123
서버 → (응답) → 클라이언트
{
"id": 123,
"name": "Alice",
"email": "alice@example.com"
}
1. 오픈 API (Open API, Public API)
누구나 사용할 수 있도록 공개된 API
예: Google Maps API, Twitter API, OpenWeather API
2. 프라이빗 API (Private API, 내부 API)
특정 조직 또는 내부 시스템에서만 사용하는 API
예: 기업 내부의 사용자 관리 API
3. 파트너 API (Partner API)
특정 파트너사와 협업하기 위해 제공하는 API
예: 결제 게이트웨이 API (PayPal, Stripe)
4. 컴포넌트 API (Composite API)
여러 개의 API를 한 번의 요청으로 호출할 수 있도록 구성된 API
API는 여러 가지 형식으로 제공될 수 있으며, 주요한 API 형식은 다음과 같습니다.
1. REST API (RESTful API)
HTTP 프로토콜을 기반으로 하는 API
REST의 원칙을 따르며, URL을 통해 리소스를 식별하고 HTTP 메서드를 사용
2. SOAP API
XML 기반의 메시지를 사용하는 API
높은 보안성과 안정성이 필요할 때 사용됨 (예: 금융 시스템)
3. GraphQL API
클라이언트가 원하는 데이터만 선택적으로 요청할 수 있는 API
REST보다 유연한 데이터 요청이 가능
4. gRPC API
바이너리 형식(Protocol Buffers)을 사용하는 API
빠른 성능과 효율성을 제공 (예: 마이크로서비스 통신)
API는 주로 HTTP 메서드를 사용하여 요청을 보냅니다.
| HTTP 메서드 | 설명 | 예제 |
|---|---|---|
| GET | 리소스 조회 | GET /users/123 |
| POST | 리소스 생성 | POST /users |
| PUT | 리소스 전체 수정 | PUT /users/123 |
| PATCH | 리소스 일부 수정 | PATCH /users/123 |
| DELETE | 리소스 삭제 | DELETE /users/123 |
API는 외부에서 접근할 수 있으므로 보안이 매우 중요합니다.
따라서, 다음과 같은 보안 기법을 적용해야 합니다.
1. 인증(Authentication) & 인가(Authorization)
2. HTTPS 사용
API 통신을 암호화하여 데이터 보호
3. CORS (Cross-Origin Resource Sharing)
도메인 간 요청을 제어하여 보안 강화
4. Rate Limiting (요청 제한)
한 사용자 또는 IP에서 일정 시간 내 보낼 수 있는 요청 수를 제한
1. 로그인 API
POST /login
{
"username": "testuser",
"password": "securepassword"
}
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}
2. 날씨 정보 API (OpenWeather API 예시)
GET /weather?q=Seoul&appid=your_api_key
{
"temperature": 15,
"weather": "Clear",
"city": "Seoul"
}
3. 번역 API (Google Translate API 예시)
POST /translate
{
"text": "Hello",
"target_language": "ko"
}
{
"translated_text": "안녕하세요"
}
API는 현대 소프트웨어 개발에서 필수적인 요소로, 다양한 시스템 간의 데이터 교환과 기능 제공을 가능하게 합니다.
API를 설계할 때는 명확한 URL 구조, 적절한 HTTP 메서드 사용, 보안 등의 요소를 신경 써야 합니다.
이를 통해 확장성과 유지보수성이 뛰어난 API를 만들 수 있습니다.
특히 RESTful API는 가장 널리 사용되는 형태로, HTTP 기반의 표준화된 방식으로 설계되는데요,
다음 포스트에서는 RESTful API에 대해서 정리해 보겠습니다!