🎃

GraphQLクエリ言語(GraphQLスキーマ定義言語)

2023/08/12に公開

概要

以下の記事でGraphQLサーバを立てるにあたり、GraphQLクエリ言語についてまとめる。GraphQL初心者向けドキュメント。
https://zenn.dev/tofucode/articles/ab2733ce1934e2

GraphQLクエリ言語とは

GraphQLクエリ言語(GraphQLスキーマ定義言語)は GraphQL 型システムで利用するスキーマを定義するための言語。

GraphQL クエリ言語は基本的にオブジェクトのフィールドを選択するもの。
まず以下のスキーマを定義(①)し、スキーマのフィールドを選択(②)することでレスポンス③を得る。

① スキーマ(サーバ側で定義)

{
  "data": {
    "hero": {
      "name": "R2-D2",
      "appearsIn": [
        "NEWHOPE",
        "EMPIRE",
        "JEDI"
      ]
    }
  }
}

② リクエスト(クライアント → サーバ)

{
  hero {
    name
    appearsIn
  }
}

③ レスポンス(サーバ → クライアント)

{
  "data": {
    "hero": {
      "name": "R2-D2",
      "appearsIn": [
        "NEWHOPE",
        "EMPIRE",
        "JEDI"
      ]
    }
  }
}

GraphQLクエリ言語の特徴

以下のような特徴を持つ。

  • int,string,float, booleanなど一般的な型が使える
  • 特別な型としてQuery, Mutationがある
  • インターフェースなども使える
  • !はNull許容または0個許容
  • パラメータごとに引数を渡すこともできる

引数を渡すクエリ

{
  human(id: "1000") {
    name
    height(unit: FOOT)
  }
}

レスポンス(id=1000の人のデータのみを、身長をフィート表記にして返している)

{
  "data": {
    "human": {
      "name": "Luke Skywalker",
      "height": 5.6430448
    }
  }
}

もっと詳しく

さらに詳しくは以下
https://graphql.org/learn/schema/

GitHubで編集を提案

Discussion