Network/API

[API] GraphQL 개요 ( + REST API 와 비교하면? )

Bans 2022. 7. 12. 02:43
GraphQL - A query language for APIs and runtime

 

GraphQL 은 Facebook 에서 만든 '쿼리 언어' 이다.

이미 많이 사용되고 있는 쿼리 언어 SQL ( Structed Query Language ) 와 같이

데이터를 가져오기 위한 언어라는 것에 그 공통점이 있지만

SQL 은 DBS(DataBase System) 에서 데이터를 가져오는데에 그 목적이 있고,

GQL 은 웹 클라이언트가 데이터를 서버로부터 효율적으로 가져오기 위함에 그 목적이 있다.

 

SQL의 문장(Statement, 호출)은 주로 백엔드 시스템에서 작성하고 사용되는 반면

GQL은 주로 클라이언트 시스템에서 작성되고 호출된다.

 

 

GraphQL is a query language for APIs and a runtime
for fulfilling those queries with your existing data. 
https://graphql.org/

 


REST API 는, 'CRUD' 방식을 가지고 'RESTful' 하게 그 형식을 구성하는 특징이 있다.

 

 

HTTP Status Coode & RESTful API : https://bans.tistory.com/9
 

[HTTP] HTTP Status Code(상태 코드)와 RESTful API

HTTP 통신을 통해 HyperText 들이 클라이언트 - 서버 모델로 정보를 전달할 때 HTTP 상태 코드들이 사용되며, 자주 쓰이는 에러코드는 알아두면 좋다. 주로 쓰이는 에러코드와 에러코드가 나타내는 정

bans.tistory.com

 

REST API 설계 예시

 

CRUD - 형식을 지닌 REST API와 달리

PUT (Create)

GET (Read)

POST (Update)

DELETE (Delete)

 

GraphQL 은 이 CRUD를

Read / Creat, Update, Delete | 두 기준으로 나눈

Query 와 Mutation 을 이용한다

  • Query : 데이터베이스에서 데이터를 읽는 요청
  • Mutation : 데이터베이스를 등록, 수정, 삭제하는 요청

REST API와 GraphQL API의 사용 (출처 : https://blog.apollographql.com/graphql-vs-rest-5d425123e34b)

자세히 살펴보면 여러 차이점이 있지만, 가장 큰 차이점으로 GraphQL API 가 가져오는 장점으로는

 

'원하는 데이터들을 원하는 양만큼 한 번의 호출로 가져올 수 있다는 장점'

 

을 제일되는 차이점으로 말한다.

 

REST API는 URL, METHOD등을 조합하기 때문에

다양한 Endpoint가 존재하는 반면,

GraphQL은 단 하나의 Endpoint가 존재하게 된다.

 

또한, GraphQL API에서는 불러오는 데이터의 종류를

쿼리 조합을 통해서 결정하기 때문에

 

REST API에서는 각 Endpoint마다 데이터베이스 SQL 쿼리가 사용된다면

GraphQL API는 GraphQL 스키마의 타입마다 데이터베이스 SQL 쿼리가 달라지게 된다.

 

REST API 를 사용하여 GET/books/1 을 호출해온 결과

 

GraphQL을 사용한 예시

 

위의 처리 내용을 그림으로 간략하게 표현하자면 아래와 같다

 

 


 

 

+ 그리고 사실..

GraphQL 도 엄밀히 따지자면 REST 다! (POST) 😲