GraphQL

yoosg·2020년 5월 6일
0

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개의 댓글