GrapqhQL이란?


그래프큐엘은 API를 만들 떄 사용할 수 있는 쿼리언어이다. 쿼리에 대한 데이터를 받을 수 있는 런타임 이기도 하다. 실제로 필요한 데이터만 받도록 작성할 수 있다.

쿼리문을 중첩하여 실행하면 연관된 객체를 응답 데이터로 같이 받을 수 있다. HTTP 요청 하나만 가지고 데이터 타입 두 가지에 응답을 얻을 수 있다. 복수의 객체 데이터를 받기 위해 요청을 여러번 할 필요가 없다. 얻으려는 타입에 원치 않는 데이터가 포함되어 있다면, 이를 제외할 수도 있다.

클라이언트 쪽에서 그래프큐엘을 사용하면 요청 한번에 필요한 데이터를 모두 받을 수 있다.

그래프큐엘 서버에서는 쿼리가 실행될 때마다 타입 시스템에 기초해 쿼리가 유효한지 검사한다. 그래프큐엘 서비스를 만들려면 그래프큐엘 스키마를 사용할 타입을 정의해야 한다. 타입 시스템은 만든 API 데이터에 대한 청사진이라고 생각하면 쉽다. 이 청사진은 미리 정의된 객체를 바탕으로 만들어 진다.

그래프큐엘은 선언형 데이터 페킹 언어라고 흔히 일커지는데 개발자는 무슨 데이터를 필요한지에 대한 요구사항만 작성하면 되고 어떻게 가져올지는 신경쓰지 않아도 된다.

GraphQL 명세


그래프큐엘은 클라이언트와 서버 간의 통신 명세(스팩). 명세란 한 언어의 능력과 특징이 기술되어 있는 것이다. 언어 명세는 그 언어를 설명하기 위한 공통의 어휘를 제공하고, 모범 사례도 설명 해주기 때문에 언어 사용자들에게 도움이 된다.

GrapqhQL 설계 원칙


그래프큐엘 API 작성법에 제한은 없으나 그래프큐엘 서비스를 만들 때 고려해야할 지침이 몇 가지 있다.

그래프큐엘 쿼리는 위계성을 띠고 있다. 필드 안에 다른 필드가 중첩 될 수 있고, 쿼리와 그에 대한 반환 데이터는 형태가 서로 같다.

클라이언트가 요구하는 데이터와 클라이언트가 지원하는 언어 및 런타임에 맞춰 동작한다.