API (RESTful API, GraphQL)

Harrison·2023년 12월 4일
1

Development Knowledge

목록 보기
2/6
post-thumbnail

API는 "Application Programming Interface"의 약자로, 소프트웨어나 애플리케이션 간의 상호작용을 가능하게 하는 도구와 규약의 집합입니다.
쉽게 말해, API는 한 프로그램이 다른 프로그램의 기능이나 데이터를 사용할 수 있도록 하는 방법을 제공합니다.

✅ API의 주요 기능과 특징

  • 인터페이스 제공: API는 명확하게 정의된 메소드나 명령의 집합을 통해 프로그램이나 서비스의 기능에 접근할 수 있게 해줍니다.

  • 상호작용 용이화: 다른 애플리케이션, 서비스 또는 시스템 간의 상호작용을 용이하게 하여, 복잡한 기능을 쉽게 통합할 수 있습니다.

  • 보안 유지: API는 사용자의 전체 시스템에 접근할 필요 없이 필요한 정보만을 제공함으로써 보안을 유지합니다.

  • 플랫폼 중립성: API는 특정 프로그래밍 언어나 기술에 구애받지 않고 다양한 환경에서 사용될 수 있습니다.

✅ API 두 가지 유형

  • 웹 API: 인터넷을 통해 서비스를 제공하는 API입니다. 예를 들어, 소셜 미디어 데이터에 접근하거나, 지도 서비스를 웹사이트에 통합하는 경우에 사용됩니다.

  • 라이브러리/프레임워크 API: 특정 프로그래밍 언어 또는 플랫폼에 특화된 API입니다. 이들은 개발자가 특정 기능을 쉽게 구현할 수 있도록 도와줍니다.

개발자들은 API를 활용하여 효율적이고 빠른 개발을 진행할 수 있으며, 기존의 코드나 서비스를 재사용할 수 있습니다.

✅ RESTful API

RESTful API는 REpresentational State Transfer의 원리를 기반으로 하는 웹 API입니다. 이는 자원(데이터 또는 서비스)을 중심으로 설계되며, HTTP 메소드(GET, POST, PUT, DELETE 등)를 사용하여 해당 자원에 대한 CRUD(생성, 읽기, 업데이트, 삭제) 작업을 수행합니다.

특징:

  • Stateless: 서버는 클라이언트의 상태를 저장하지 않습니다.
  • Uniform Interface: 표준화된 인터페이스를 사용하여 통신합니다.
  • Cacheable: 응답은 캐시 가능해야 합니다.

사용 예시:

예를 들어, 소셜 미디어 플랫폼의 사용자 정보를 관리하는 RESTful API가 있다고 가정해봅시다. 이 API는 다음과 같은 HTTP 요청을 사용할 수 있습니다:

  • 사용자 목록 조회: GET /users
  • 특정 사용자 조회: GET /users/{userId}
  • 사용자 추가: POST /users
  • 사용자 정보 업데이트: PUT /users/{userId}
  • 사용자 삭제: DELETE /users/{userId}

✅ GraphQL

GraphQL은 페이스북에 의해 개발된 데이터 쿼리 및 조작 언어입니다. 클라이언트는 필요한 데이터의 구조를 정의한 쿼리를 서버에 보내고, 서버는 정확히 그 구조로 데이터를 반환합니다.

특징:

  • 정확한 데이터 요청: 클라이언트는 필요한 데이터만 요청할 수 있습니다.
  • 단일 엔드포인트: 모든 쿼리는 단일 엔드포인트를 통해 처리됩니다.
  • 타입 시스템: 데이터는 스키마에 정의된 타입을 기반으로 합니다.

사용 예시:

동일한 소셜 미디어 플랫폼에서 GraphQL을 사용하는 경우, 클라이언트는 다음과 같은 쿼리를 보낼 수 있습니다:

query {
  user(id: "1") {
    name
    email
    friends {
      name
    }
  }
}

이 쿼리는 ID가 1인 사용자의 이름, 이메일, 그리고 친구들의 이름을 요청합니다. 서버는 정확히 이 정보만을 포함하여 응답합니다.

✅ RESTful API 와 GraphQL 비교

  • RESTful API는 각 리소스에 대한 별도의 엔드포인트를 가지며, 클라이언트가 여러 엔드포인트를 호출해야 하는 경우가 많습니다. 이는 때때로 "오버페칭"(필요 이상의 데이터를 받는 것)과 "언더페칭"(필요한 데이터를 한 번에 받지 못하는 것)의 문제를 발생시킬 수 있습니다.

  • GraphQL은 클라이언트가 정확히 필요한 데이터를 요청할 수 있게 해줍니다. 하지만 복잡한 쿼리는 서버 측에서 성능 문제를 일으킬 수 있습니다.

개발 프로젝트에서는 이러한 특징들을 고려하여 두 기술 중 적합한 것을 선택하게 됩니다.

profile
Web front-end Dev.

0개의 댓글

관련 채용 정보