서비스 모듈 | API

Faithful Dev·2025년 3월 11일

API는 소프트웨어 애플리케이션 간의 상호 작용을 가능하게 하는 인터페이스(중간 매개체)이다. 즉, 서로 다른 소프트웨어 시스템이 데이터를 주고받거나 기능을 공유할 수 있도록 하는 규칙과 도구들의 집합이다.


주요 개념

인터페이스 역할

  • API는 소프트웨어 간의 연결점 역할을 한다.
  • 개발자는 API를 통해 외부 서비스나 시스템의 기능을 활용할 수 있다.

요청(Request)과 응답(Response)

  • 클라이언트가 API를 호출하면, API는 해당 요청을 처리하고 결과를 반환한다.
  • 일반적으로 HTTP 요청을 통해 API가 작동한다.

입출력 데이터 형식

  • API는 데이터를 주고받을 때 특정한 포맷을 사용한다.
  • 일반적으로 JSON(JavaScript Object Notation) 또는 XML(eXtensible Markup Language)을 사용한다.

유형

웹 API (Web API)

  • 네트워크(주로 인터넷)를 통해 서비스 제공
  • REST API, GraphQL API, SOAP API 등이 포함됨

라이브러리 API

  • 특정 프로그래밍 언어에서 제공하는 라이브러리의 기능을 사용할 수 있도록 제공
  • 예: Java의 java.sql 패키지, Python의 math 모듈

운영체제 API

  • 운영체제에서 제공하는 기능을 사용하도록 허용
  • 예: macOS의 Core Foundation API, Windows의 Win32 API

하드웨어 API

  • 특정 하드웨어 기능을 소프트웨어에서 사용할 수 있도록 제공
  • 예: OpenGL (그래픽 카드 API), DirectX (멀티미디어 API)

주요 종류

REST API

  • HTTP 기반의 API 설계 원칙을 따름
  • 일반적으로 GET, POST, PUT, DELETE 등의 HTTP 메서드를 사용
  • JSON 형식의 데이터를 주로 사용

SOAP API

  • XML을 사용하여, REST보다 무겁고 보안이 강화된 프로토콜
  • 주로 금융 및 기업 시스템에서 사용

GraphQL API

  • 클라이언트가 원하는 데이터만 요청할 수 있도록 설계된 API
  • REST보다 유연하고 효율적

사용 예시 (REST API)

예를 들어, https:/api.example.com/users라는 API 엔드포인트가 있을 때:

사용자 목록 가져오기 (GET 요청)

GET /users HTTP/1.1
Host: api.example.com

응답(JSON)

[
  { "id": 1, "name": "다미" },
  { "id": 2, "name": "별이" }
]

새로운 사용자 추가 (POST 요청)

POST /users HTTP/1.1
Host: api.example.com
Content-Type: application/json

{
  "name": "Charlie"
}

응답

{ "id": 3, "name": "Charlie" }

장점

  • 재사용성: 한 번 개발된 API를 여러 애플리케이션에서 활용 가능
  • 확장성: 시스템을 독립적으로 확장 및 수정 가능
  • 보안성: 인증 및 권한 부여를 통해 보안 강화 (예: OAuth, JWT)
  • 유지보수 용이: 클라이언트와 서버가 분리되어 유지보수 편리

관련 기술

  • OAuth: 인증 및 권한 부여를 위한 표준 프로토콜
  • JWT (JSON Web Token): 보안 토큰 기반의 인증 방식
  • Postman: API 테스트 및 개발 도구
  • Swagger (OpenAPI): API 문서화 및 테스트 도구

정리

API는 현대 소프트웨어 개발에서 필수적인 요소이며, 웹 서비스, 모바일 앱, 클라우드 시스템 등 다양한 환경에서 사용된다. 특히 REST API와 GraphQL은 웹 개발에서 가장 널리 쓰이며, 보안 및 확장성을 고려한 API 설계가 중요하다.

profile
Turning Vision into Reality.

0개의 댓글