GraphQL

yoosg·2020년 5월 6일

GraphQL이란?

GraphQL(GQL)은 페이스북에서 만든 것으로 Structed Query Language(SQL)과 같은 쿼리 언어다. 우선 GQL과 SQL은 언어적 구조 차이가 매우 크다. 또한 실제로 쓰이는 방식의 차이도 크다.

SQL Query

  • SQL은 데이터베이스 시스템에 저장된 데이터를 효율적으로 가져오는 것이 목적이고, 문장(statement)은 주로 백앤드 시스템에서 작성하고 호출한다.
SELECT plot_id, species_id, sex, weight, ROUND(weight / 1000.0, 2) FROM surveys;

GQL Query

  • GQL은 웹 클라이언트가 데이터를 서버로 부터 효율적으로 가져오는 것이 목적이고 문장은 주로 클라이언트 시스템에서 작성하고 호출한다.
{
  hero {
    name
    friends {
      name
    }
  }
}

GraphQL & REST API 차이점.

REST API는 URL, METHOD등을 조합하기 때문에 다양한 Endpoint가 존재한다. 반면, GQL은 단 하나의 Endpoint가 존재한다. 또한, GQL API에서는 불러오는 데이터의 종류를 쿼리 조합을 통해서 결정한다. 예를 들면, REST API에서는 각 Endpoint마다 데이터베이스 SQL 쿼리가 달라지는 반면, GQL API는 GQL 스키마의 타입마다 데이터베이스 SQL 쿼리가 달라진다.

GraphQL 구조

쿼리/뮤테이션(query/mutation)

쿼리와 뮤테이션 그리고 응답 내용의 구조는 직관적이다. 요청하는 쿼리문의 구조와 응답 내용의 구조는 거의 일치한다.

스키마/타입(schema/type)

type Character {
  name: String!
  appearsIn: [Episode!]!
}
  • 오브젝트 타입 : Character
  • 필드 : name, appearsIn
  • 스칼라 타입 : String, ID, Int 등
  • 느낌표(!) : 필수 값을 의미(non-nullable)
  • 대괄호([, ]) : 배열을 의미(array)

0개의 댓글