API(Application Programming Interface)는 소프트웨어 간의 상호작용을 가능하게 하는 인터페이스의 집합이다. 특정 기능을 외부에서 호출하여 사용할 수 있도록 정의된 규칙, 프로토콜, 도구를 포함한다. API는 모듈 간의 결합도를 낮추고 재사용성을 증가시키며, 현대 소프트웨어 아키텍처에서 핵심적인 역할을 담당한다.
API는 응용 프로그램이 운영체제, 라이브러리, 다른 서비스와 소통할 수 있도록 중재하는 인터페이스이다. 예를 들어, 클라이언트 애플리케이션이 서버로부터 데이터를 요청하거나 전송할 수 있는 구조를 제공한다.
Endpoint: API가 노출하는 URL 주소이며, 특정 리소스에 대한 접근 지점을 의미한다.
예: https://example.com/api/users
Method (HTTP Method): API 요청의 목적을 나타내며, 대표적으로 GET, POST, PUT, DELETE 등이 있다.
| 메서드 | 의미 |
|---|---|
| GET | 리소스 조회 |
| POST | 리소스 생성 |
| PUT | 리소스 전체 수정 |
| PATCH | 리소스 부분 수정 |
| DELETE | 리소스 삭제 |
Request: 클라이언트가 API에 보내는 데이터. 주로 헤더, 바디, 파라미터를 포함한다.
Response: 서버가 클라이언트에게 반환하는 데이터. 주로 JSON 또는 XML 형식으로 구성된다.
Status Code: HTTP 상태 코드로 요청의 성공 또는 실패를 나타낸다.
예: 200 OK, 404 Not Found, 500 Internal Server Error
이를 수식으로 간단히 표현하면 다음과 같다.
| 구분 | 설명 |
|---|---|
| REST API | Representational State Transfer의 원칙을 따르는 API. URL은 자원을 표현하며, HTTP 메서드로 행위를 구분한다. |
| GraphQL API | 하나의 Endpoint를 통해 필요한 데이터만 선택적으로 요청 가능. 쿼리 언어 기반. |
| gRPC API | Google에서 개발한 고성능 RPC 프레임워크. Protocol Buffer 기반으로 직렬화 및 양방향 스트리밍 가능. |
사용자가 특정 사용자의 정보를 조회하고자 할 때:
GET /api/users/1{
"id": 1,
"username": "velog_user",
"email": "user@example.com"
}
API는 시스템 간 데이터 통신을 추상화하여 다양한 애플리케이션 구성 요소의 효율적 통합을 가능하게 한다. 특히 RESTful 아키텍처의 등장 이후, API는 웹 기반 시스템 설계에서 필수적인 기술 요소로 자리 잡았다.