GraphQL Overview

GraphQL Overview

소개

이것은 클라이언트 - 서버 애플리케이션의 데이터 모델의 기능 및 요구 사항을 설명하기 위해 2012 년 Facebook에서 원래 작성된 쿼리 언어 및 실행 엔진 인 GraphQL의 사양입니다.
이 공개 표준의 개발은 2015 년에 시작되었습니다.

GraphQL은 진화했으며이 사양의 차후 버전에서 계속 진화 할 것입니다.
GraphQL 사양의 이전 버전은 릴리스 태그 와 일치하는 영구 링크에서 찾을 수 있습니다.
최신 작업 초안 릴리스는 facebook.github.io/graphql/draft/ 에서 찾을 수 있습니다 .

Overview

GraphQL은 데이터 요구 사항과 상호 작용을 설명하기위한 직관적이고 유연한 구문과 시스템을 제공하여 클라이언트 응용 프로그램을 작성하도록 설계된 쿼리 언어입니다.

예를 들어이 GraphQL 요청은 GraphQL의 Facebook 구현에서 ID가 4 인 사용자의 이름을받습니다.

1
2
3
4
5
6
{
user(id: 4) {
name
}
}

응답값

1
2
3
4
5
{
"user": {
"name": "Mark Zuckerberg"
}
}

GraphQL은 임의적 인 계산을 할 수있는 프로그래밍 언어는 아니지만이 스펙에 정의 된 기능을 가진 애플리케이션 서버를 쿼리하는 데 사용되는 언어입니다.
GraphQL은 특정 프로그래밍 언어 또는 스토리지 시스템 A를 구현하는 애플리케이션 서버를 위임하지 않습니다.
대신 응용 프로그램 서버는 기능을 사용하여 GraphQL이 인코딩하는 통일 된 언어, 유형 시스템 및 철학에 매핑합니다.
이는 제품 개발에 친숙한 통합 인터페이스와 도구 제작을위한 강력한 플랫폼을 제공합니다.

GraphQL은 많은 디자인 원칙을 가지고 있습니다 :

  • Hierarchical : 오늘날 대부분의 제품 개발에는 뷰 계층 구조의 생성과 조작이 필요합니다.
    이러한 응용 프로그램의 구조와 일치하려면 GraphQL 쿼리 자체가 계층 적으로 구조화됩니다.
    쿼리는 반환하는 데이터와 모양이 같습니다.
    고객이 데이터 요구 사항을 설명하는 것은 자연스러운 방법입니다.

  • Product-centric(제품중심) : GraphQL은 뷰 및 이를 작성하는 프론트 엔드 엔지니어의 요구 사항에 따라 변하지 않습니다.
    GraphQL은 사고 방식과 요구 사항부터 시작하여이를 가능하게하는 데 필요한 언어와 런타임을 구축합니다.

  • Strong‐typing : 모든 GraphQL 서버는 애플리케이션 별 유형 시스템을 정의합니다.
    쿼리는 해당 유형 시스템의 컨텍스트 내에서 실행됩니다.
    주어진 질의를 통해 도구는 실행 전에 GraphQL 유형 시스템 내에서 구문 적으로 정확하고 유효하다는 것을 보장 할 수 있습니다.
    즉, 개발시에 서버는 응답의 모양과 특성에 대해 확실한 보장을 할 수 있습니다.

  • Client‐specified queries : GraphQL 서버는 유형 시스템을 통해 클라이언트가 사용할 수있는 기능을 게시합니다.
    게시 된 기능을 정확히 어떻게 사용할지 지정하는 것은 클라이언트입니다.
    이 u 리는 필드 레벨 단위로 지정됩니다.
    GraphQL없이 작성된 대부분의 클라이언트 - 서버 애플리케이션에서 서버는 다양한 스크립트 엔드 포인트에서 반환 된 데이터를 결정합니다.
    GraphQL 쿼리는 클라이언트가 요청한 것과 정확히 일치하는 것을 반환합니다.

  • Introspective : GraphQL은 내성적이다. GraphQL 서버의 타입 시스템은 본 명세서에서 설명하는 것처럼 GraphQL 언어 자체로 질의 가능해야한다.
    GraphQL 내성 검사는 일반적인 도구와 클라이언트 소프트웨어 라이브러리를 구축하기위한 강력한 플랫폼 역할을합니다.

이러한 원리 때문에 GraphQL은 클라이언트 응용 프로그램을 작성하기위한 강력하고 생산적인 환경입니다.
고품질의 도구로 지원되는 GraphQL 서버가 작동하는 것을 상대로 응용 프로그램을 개발하는 제품 개발자 및 설계자는 광범위한 문서를 읽지 않고 정식 교육을 거의 또는 전혀받지 않고도 신속하게 생산성을 높일 수 있습니다.
이러한 경험을 가능하게하려면 해당 서버 및 도구를 구축해야합니다.

다음 공식 스펙은 해당 빌더에 대한 참조로 사용됩니다.
그것은 언어와 문법, 그것을 질의하는 데 사용 된 타입 시스템과 인트로 스펙 션 시스템, 그리고 그것을 실행하기위한 알고리즘을 가진 실행 및 검증 엔진을 설명합니다.
이 스펙의 목표는 아직 구축되지 않은 GraphQL 도구, 클라이언트 라이브러리 및 서버 구현 (조직과 플랫폼 모두 포함)의 에코 시스템을위한 기반과 프레임 워크를 제공하는 것입니다.
우리는 지역 사회와 함께 일하기를 기대합니다.

참조