Post

API

API

1절. 정의

API

  • Application Programming Interface
  • 소프트웨어 컴포넌트 간 통신을 돕는 매개체
  • 데이터를 주고 받거나 기능을 공유하는 중간 다리
  • 응용 프로그램 간 상호 작용하는 인터페이스
  • 프로그램 소통 규칙

역할

역할설명
데이터
교환
서로 다른 시스템 간 데이터 교환
기능
제공
특정 기능을 타 프로그램에서 활용
(ex : 결제, 로그인, 지도 서비스 등)
코드
재사용
같은 기능을 여러 시스템에서 공통으로 사용

예시

예시설명
날씨기상청 서버에서 날씨 정보를 가져와 사용자에게 제공
지도 서비스음식 배달 앱의 위치 정보 제공
소셜 로그인Google, Naver, Kakao 등 계정으로 간편 로그인

2절. 동작

동작 방식

  • 클라이언트와 서버 간의 요청 및 응답

APIOperation{ width=”70%” }

단계설명
Request클라이언트(Client)가 특정 주소(End Point)로 필요한 API 요청
Process서버(Server)가 요청 해석 후 DB 조회나 로직 처리
Response클라이언트가 처리 결과를 정해진 형식(JSON, XML 등)으로 반환된 데이터 응답

동작 활용

  • 사용자 정보 조회
1
2
3
4
5
6
7
8
9
// 클라이언트 → (요청) → 서버
GET /users/123

// 서버 → (응답) → 클라이언트
{
  "id": 215,
  "name": "BangYunseo",
  "email": "yunseobang33@gmail.com"
}

실제 동작 활용

1. API 키 발급

  • 대부분의 API는 인증용 키(API Key) 필요

2. HTTP 요청

  • GET : 데이터 조회 요청
  • POST : 새로운 데이터 생성 요청

3. 응답 확인

  • JSON or XML 형식으로 반환된 데이터 확인

실제 API 동작 예시 : 서울시 공공 데이터 지하철 통계

1
2
3
4
5
import requests

url = 'http://openapi.seoul.go.kr:8088/sample/json/CardSubwayStatsNew/1/5/20220301'
response = requests.get(url)
print(response.json())

3절. API 기능

종류

종류설명예시
Open(Public)누구나 사용하도록 공개된 APIGoogle Maps, 공공데이터포털 등
Private(Internal)기업 내부 시스템 간 통신용사내 인사 관리 시스템 연동
Partner특정 파트너사와 협업을 위해 제공하는 API- 결제 게이트웨이 API(PayPal, Stripe 등)
Composite여러 개의 API를 한 번의 요청으로 호출하도록 구성된 API 

유형

유형특징
REST(RESTful) API- 가장 널리 사용되는 방식
- HTTP 프로토콜 기반 API
- 데이터는 주로 JSON 형식으로 교환
- REST의 원칙을 따르며 URL로 리소스를 식별하고 HTTP 메서드 사용
SOAP API- XML 기반 API
- XML 기반으로 높은 보안성과 안정성이 필요한 경우(ex: 금융 시스템) 사용
- 비교적 무거운 편
GraphQL API- 필요한 데이터만 선택적으로 요청할 수 있는 API
- REST보다 유연한 데이터 요청 가능
gRPC API- 바이너리 형식(Protocol Buffers)을 사용하는 API
- 빠른 성능과 효율성 제공(ex: 마이크로서비스 통신)

호출 방식(HTTP 메서드)

HTTP 메서드설명예시
GET리소스 조회GET/users/123
POST리소스 생성POST/users
PUT리소스 전체 수정PUT/users/123
PATCH리소스 일부 수정PATCH/users/123
DELETE리소스 삭제DELETE/users/123

보안(Security)

  • API는 외부에서 접근 가능
    • 보안이 매우 중요
  • 보안 기법
종류설명
인증(Authentication) & 인가(Authorization)- API Key: 고유한 키를 사용한 API 접근 제어
- OAuth 2.0: 토큰 기반 인증 방식
- JWT(JSON Web Token): 사용자 인증 및 정보 전달
HTTPS 사용API 통신 암호화로 데이터 보호
CORS(Cross-Origin Resource Sharing)도메인 간 요청 제어 후 보안 강화
Rate Limiting한 사용자 또는 IP에서 일정 시간 내 요청 수 제한

4절. API 활용

로그인 API

  • 요청
1
2
3
4
5
POST /login
{
  "username": "testuser",
  "password": "securepassword"
}
  • 응답
1
2
3
{
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}

날씨 정보 API

  • OpenWeather API

  • 요청

1
GET /weather?q=Seoul&appid=your_api_key
  • 응답
1
2
3
4
5
6
POST /login
{
  "temperature": 15,
  "weather": "Clear",
  "city": "Seoul"
}

번역 API

  • Google Translate API

  • 요청

1
2
3
4
5
POST /translate
{
  "text": "Hello",
  "target_language": "ko"
}
  • 응답
1
2
3
{
  "translated_text": "안녕하세요"
}
This post is licensed under CC BY 4.0 by the author.