GraphQL과 REST API 차이 비교

Janet·2023년 12월 28일
0

GraphQL

목록 보기
1/3

GraphQL(Graph Query Language)이란?

GraphQL은 Facebook에서 개발한 API의 쿼리 언어로, 2012년에 등장하여 2015년에 오픈 소스로 전환되었습니다. 클라이언트는 GraphQL 서버로 쿼리를 전송하고, 서버는 해당 쿼리를 해석하고 데이터를 반환합니다.

REST API와 GraphQL은 API와 상호작용 시 사용하는 옵션 및 접근 방식입니다. 둘 다 리소스를 URL로 식별하고 이를 통해 데이터를 교환하거나 설계한다는 점에서 유사하지만 많은 차이점이 존재합니다.

또한, GraphQL은 항상 전체 데이터 세트를 반환하는 REST API의 한계를 극복하고자 등장했습니다.

REST API의 제약 및 한계점

  1. Over-fetching: 클라이언트가 요청한 데이터보다 더 많은 데이터를 서버에서 받아오는 현상을 의미합니다.
    (ex: 사용자 목록을 가져오는 API에서 사용자의 이름과 이메일만 필요한데, 전체 사용자 정보를 받아오는 경우)
  2. Under-fetching: 클라이언트가 필요로 하는 데이터를 모두 가져오지 못해 여러 번의 요청이 필요한 현상을 의미합니다. (ex: 사용자 목록을 가져오는 API에서 사용자 목록과 함께 각 사용자의 프로필 이미지를 가져와야 하는데, 따로 이미지를 가져와야 하는 경우)
  3. 기능/액션 별 다양한 Endpoint 생성 필요

REST API와 GraphQL의 공통점

  • 리소스를 URL로 식별하고 이를 통해 데이터를 교환하거나 설계합니다.
  • HTTP 통신 프로토콜을 기반으로 합니다.
  • 유사한 데이터 형식을 지원합니다. 가장 널리 사용되는 데이터 교환 형식인 JSON을 비롯하여 XML 및 HTML 등의 데이터 형식도 사용 가능합니다.
  • 캐싱을 지원합니다. (자주 액세스하는 데이터 캐싱하여 통신 속도 향상)

REST API와 GraphQL의 차이

1. 개발 중점의 차이:

  • REST API: 애플리케이션 통신을 위한 아키텍처 개념으로, REST는 새로운 API를 만드는 데 더 중점을 두고 개발되어 왔습니다.
  • GraphQL: API 쿼리 언어 및 도구로 API의 성능과 유연성에 중점을 두었습니다.

2. 엔드포인트 방식:

  • REST API: 정형화된 엔드포인트를 사용하며, 각 엔드포인트는 특정 리소스나 액션을 나타냅니다. 클라이언트는 여러 RESTful 엔드포인트를 통해 서버로 요청을 보내고, 각각의 엔드포인트는 특정 데이터를 반환합니다.
  • GraphQL: 하나의 엔드포인트를 사용하며, 클라이언트는 원하는 데이터의 구조와 양을 정의하여 요청합니다. 서버는 클라이언트가 요청한 대로 데이터를 반환합니다.

3. 클라이언트 측 요청 방식:

  • REST API: 상황에 따라 다른 HTTP Method(GET, POST, PUT, DELETE)를 사용하고 이에 따른 각각의 URL이 존재합니다.
  • GraphQL: 마찬가지로 HTTP 요청 방식을 사용하지만, 내부적으로 모든 클라이언트 요청을 POST만 사용합니다.

4. 데이터 요청 및 응답:

  • REST API: 서버에서 정의한 데이터를 클라이언트가 받아야 하며, 필요하지 않은 데이터도 함께 전송될 수 있습니다. 따라서 Over-fetching 또는 Under-fetching이 발생할 수 있습니다.
  • GraphQL: 클라이언트가 필요로 하는 데이터의 형태와 양을 정의하기 때문에, 필요한 데이터만을 요청할 수 있습니다.

5. 버전 관리:

  • REST API: 새로운 기능이나 수정이 필요할 때 버전을 업데이트하거나 새로운 엔드포인트를 추가합니다.
  • GraphQL: 기존 쿼리에 새로운 필드를 추가하거나 수정함으로써 기존 쿼리를 확장할 수 있습니다.

6. 코드의 양 및 중복 여부:

  • REST API: 각 엔드포인트는 특정한 기능이나 데이터를 나타내므로, 여러 엔드포인트를 호출하는 경우 중복된 코드가 발생할 수 있습니다.
  • GraphQL: 클라이언트는 필요한 데이터를 요청하기 때문에 필요한 데이터에 대한 쿼리만 작성하면 됩니다.

REST API vs GraphQL 선택 시 고려사항

  • 프로젝트의 규모와 복잡성: REST는 리소스가 잘 정의된 간단한 데이터 소스에 적합, GraphQL은 크고 복잡하며 서로 연관된 데이터를 동적으로 요청해야 하는 경우에 적합합니다.
  • 클라이언트 요구사항과 데이터 요청의 동적성
  • 다양한 플랫폼과 디바이스 지원 여부
  • 개발자들의 경험과 선호도
  • 데이터의 정적 또는 동적 특성
  • REST의 간결함 vs. GraphQL의 유연성 및 효율성

Reference.

profile
😸

0개의 댓글