최근 수정 시각 : 2026-03-21 03:19:36

GraphQL

그래프QL
GraphQL
파일:GraphQL_Logo.svg
개발 메타 플랫폼즈[1]
개발일 2015년 9월 14일
프로그래밍 언어 Java, 자바스크립트, Ruby, Scala
소스코드 GraphQL spec
대상 플랫폼 크로스 플랫폼
파일:홈페이지 아이콘.svg
1. 개요2. 특징3. REST와 비교4. 여담

1. 개요

GraphQL은 메타 플랫폼즈[2]에서 개발한 발표된 구조적 데이터 질의 언어이다.[3]

언어 스펙은 오픈 소스로 공개되어 있다.#

2. 특징

GraphQL에서는 사용자는 데이터베이스에 요청할 데이터의 구조를 지정할 수 있으며[4], 서버는 요청한 구조로 데이터를 반환한다. 따라서 불필요한 데이터를 받지 않을 수 있으며, 일반적인 API보다 리소스를 절약하기에 용이하다.

또한 보통의 API 서버를 구축하면 목적에 따라 Endpoint가 나뉘는 것 (회원가입은 /api/register, 로그인은 /api/login 등)과 달리, GraphQL은 보통 /graphql로 끝나는 단일 Endpoint를 지향[5]하고 있어 URL 분류에 신경쓰지 않고 오직 데이터 송수신에만 집중할 수 있다는 장점이 있다.

3. REST와 비교

GraphQL은 API를 위한 질의 언어이자 서버 측 런타임으로 클라이언트가 원하는 데이터 구조를 직접 명시하고, 그에 맞는 읃답을 받는 것을 중요시 한다. REST는 웹 전반의 자원을 설계하고 GraphQL은 그러한 API를 보다 유연하게 조회하고, 조작하기 위한 구체적 방식에 가깝다.

자원 중심으로 설계되는 REST API는 /users, /posts, /comments 같은 식으로 여러 엔드포인트를 두고, HTTP Method (GET, POST, PUT, DELETE 등등)을 통해 조회, 생성, 수정, 삭제 등을 구분한다. URL만으로도 어떠한 작업을 수행할지 직관적으로 파악할 수 있다는 장점이 있지만, GraphQL은 주로 단일 엔드포인트를 통해 요청을 받고, 요청에 따른 쿼리나 뮤테이션에 따라 어떤 데이터를 읽고 작업을 수행할지 결정한다. (반드시 단일 엔드포인트만 사용해야 하는 것은 아니다.)

REST API와 GraphQL의 가장 큰 차이는 응답 구조를 누가 주도하는가? 로 볼 수 있다. REST에서는 서버가 각 엔드포인트별 응답 형식을 미리 정해둔다. 클라이언트는 서버가 준비한 형식에 맞추어 데이터를 받고, 필요한 경우 여러 엔드포인트를 호출하여 조합해야하지만, GraphQL에서는 클라이언트가 필요한 필드만 선택적으로 요청할 수 있어 각 화면에서 필요한 데이터를 받아오는 식의 세밀한 제어가 가능하다.

4. 여담

메타 플랫폼즈의 서비스, 핀터레스트, 에어비앤비, AWS, 마이크로소프트 등 많은 곳에서 이를 이용하고 있다고 한다.
[1] 구 페이스북[2] 구 페이스북[3] GQL과는 다르다.[4] 보통 JSON 을 이용한다.[5] Serving over HTTP - GraphQL 공식 도움말