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
CRUD - 형식을 지닌 REST API와 달리
PUT (Create)
GET (Read)
POST (Update)
DELETE (Delete)
GraphQL 은 이 CRUD를
Read / Creat, Update, Delete | 두 기준으로 나눈
Query 와 Mutation 을 이용한다
- Query : 데이터베이스에서 데이터를 읽는 요청
- Mutation : 데이터베이스를 등록, 수정, 삭제하는 요청
자세히 살펴보면 여러 차이점이 있지만, 가장 큰 차이점으로 GraphQL API 가 가져오는 장점으로는
'원하는 데이터들을 원하는 양만큼 한 번의 호출로 가져올 수 있다는 장점'
을 제일되는 차이점으로 말한다.
REST API는 URL, METHOD등을 조합하기 때문에
다양한 Endpoint가 존재하는 반면,
GraphQL은 단 하나의 Endpoint가 존재하게 된다.
또한, GraphQL API에서는 불러오는 데이터의 종류를
쿼리 조합을 통해서 결정하기 때문에
REST API에서는 각 Endpoint마다 데이터베이스 SQL 쿼리가 사용된다면
GraphQL API는 GraphQL 스키마의 타입마다 데이터베이스 SQL 쿼리가 달라지게 된다.
위의 처리 내용을 그림으로 간략하게 표현하자면 아래와 같다
+ 그리고 사실..
GraphQL 도 엄밀히 따지자면 REST 다! (POST) 😲