GraphQL - REST API vs GraphQL

Jihun Kim·2022년 4월 19일
0

GraphQL

목록 보기
1/16
post-thumbnail

GraphQL의 특징을 알아보기에 앞서, GraphQL과 REST API의 차이점을 통해 GraphQL 도입의 필요성을 생각해 보려 한다.



GraphQL

SQL은 데이터베이스에 저장된 데이터를 효율적으로 가져오는 것이 목적이지만 GQL은 클라이언트가 서버로부터 데이터를 효율적으로 가져오는 것이 목적이다.

  • SQL과 GQL은 모두 쿼리 언어이지만 쿼리 하는 대상이 다르다.
    - SQL은 백엔드에서 작성 후 데이터베이스로부터 호출하지만 GQL은 프론트엔드에서 작성 후 백엔드로부터 호출한다.


REST API vs GraphQL

REST API에서는 각 Endpoint마다 데이터베이스 SQL 쿼리가 달라지는 반면, GraphQL API는 GQL 스키마의 타입마다 데이터베이스 SQL 쿼리가 달라진다.

  • REST API에서는 리소스의 형태에 대한 정의와 데이터 요청 방법이 연결 되어 있지만 GraphQL은 이 둘이 분리되어 있다.
  • REST API에서는 리소스의 크기와 형태가 백엔드에서 결정되지만 GraphQL은 클라이언트의 요청에 따라 리소스가 결정 된다.
  • REST API에서는 URI가 리소스, Method가 작업 유형이지만 GraphQL에서는 스키마가 리소스, Query & Mutation이 작업 유형을 의미한다.
  • REST API는 다양한 엔드포인트를 갖지만 GraphQL은 하나의 엔드포인트만 갖는다.
    - 보통 /graphql을 사용한다.
  • REST API에서는 각 엔드포인트마다 SQL 쿼리가 달라지지만 GraphQL은 스키마 타입마다 SQL 쿼리가 달라진다.

아래와 같이 표로 정리해 보았다.


REST API

REST를 사용하는 이유

  • 예측 가능하며 일정한 데이터를 요청할 수 있다.

REST의 단점

  • REST API에서는 하나의 Endpoint에서 돌려줄 수 있는 응답의 구조가 정해져 있는 경우가 많아 필요 없는 정보까지 얻게 되어 응답 데이터의 크기가 커진다.
  • REST API는 Endpoint에서 그 리소스에 대한 거의 모든 것을 담당하기 때문에 어떤 정보를 얻으려면 각 리소스 종류 별로 요청을 해야 한다.
    - 즉, 요청 횟수가 필요한 리소스의 종류에 비례 한다.


GraphQL

GraphQL의 장점

  • 다양한 depth의 정보를 한 번의 요청으로 가져올 수 있다.
    - 클라이언트 구현에 용이하다.
    - HTTP 요청의 횟수를 줄일 수 있다.
  • 데이터를 사용하는 쪽에서 원하는 대로 정보를 가져올 수 있다.
    - os에 관계 없이 다양한 기종에서 원하는 정보를 가져올 수 있어 하나의 레포지토리로 작업하는 것이 가능하다.
  • 필요한 항목만을 가져오는 Query를 작성해 서버에 요청을 보낼 수 있다.
    - HTTP 응답의 데이터 크기를 줄일 수 있다.

GraphQL의 단점

  • 받아야 하는 항목이 많고 고정된 요청과 응답만 할 경우 Query로 인해 요청의 크기가 Restful의 경우보다 더 커질 수 있다.
    - 따라서, GraphQL을 도입해야 하는 시점은 다양한 리소스 요청과 응답이 일어나는 경우일 것이다.
profile
쿄쿄

0개의 댓글