サーチ…


備考

GraphQLはAPI用のクエリ言語であり、既存のデータでこれらのクエリを実行するためのランタイムです。 GraphQLは、APIのデータの完全で分かりやすい説明を提供し、クライアントに必要なものを何でも尋ねる能力を与え、時間の経過とともにAPIを進化させやすくし、強力な開発ツールを可能にします。

GraphQLはいつ使うべきですか?

GraphQLは、あらゆる種類のアプリケーション向けの外向きのHTTP APIを意図していますが、高度に相互接続されたコレクション|テーブル|ノードでデータが正規化されると最も強力です。 GraphQL Query Language(GQL)は、非常に直感的で柔軟な方法で相互接続されたデータを投影するように設計されています。

実装

GraphQL自体は仕様であり、さまざまなプログラミング言語で実装されています。これらは最も一般的なサポート言語です

クライアントライブラリ

クライアント側から問合せを実行するには、任意のHTTPクライアントを使用できますが、クライアント側のライブラリは非常に有益です。

開発ツール

  • graphiql /ɡrafək(ə)l / - インタラクティブなブラウザ内のGraphQL IDEです。
  • libgraphqlparser - C ++のCおよびC ++ APIを使用したGraphQLクエリ言語パーサー。
  • GraphQL言語サービス - IDE用のGraphQL言語サービスを構築するためのインタフェース(診断、オートコンプリートなど)。

バージョン

バージョン発売日
v0.5.0 2016-04-08
v0.6.0 2016-05-10
v0.6.1 2016-07-07
v0.6.2 2016-07-21
v0.7.0 2016-08-26
v0.7.1 2016-09-29
v0.7.2 2016-10-10
v0.8.0 2016-11-10
v0.8.1 2016-11-11
v0.8.2 2016-11-16

サーバーのインストールと実装

GraphQL.js

GraphQL.jsは、 GraphQLのJavaScriptリファレンス実装です。 npm経由でインストールできます:

  • まだ完了していない場合は、プロジェクトのnpmを初期化してください: npm init
  • npmからGraphQL.jsをnpm install --save graphqlnpm install --save graphql

サンプルサーバー

var { graphql, buildSchema } = require('graphql');

// Construct a schema, using GraphQL schema language
var schema = buildSchema(`
  type Query {
    hello: String
  }
`);

// The root provides a resolver function for each API endpoint
var root = {
  hello: () => {
    return 'Hello world!';
  },
};

// Run the GraphQL query '{ hello }' and print out the response
graphql(schema, '{ hello }', root).then((response) => {
  console.log(response);
});

サーバーミドルウェアの代替案

GraphQLクエリ言語(GQL)

GraphQLでは、各データリソースのURLエンドポイントを定義する代わりに、GraphQLクエリを受け入れる単一のエンドポイントを定義します。従来のデータベースクエリ言語とは異なり、GraphQLクエリ言語(GQL)は、ルートレベルのクエリによって返されるデータの投影です。 GraphQLスキーマは、データモデルとルートレベルのクエリと突然変異を定義します。 GQLはこれらのクエリを実行し、返すデータを定義します。

Star Warsスキーマからすべての映画タイトルのクエリ

タイトルのみを投影したallFilmsのStar Warsデータクエリ GraphiQLクエリ

スター・ウォーズ映画「新しい希望」への惑星居住者への質問

ここに画像の説明を入力 GraphiQLクエリ

ルートクエリーfilm()が映画「A New Hope」のidパラメータをどのようにとっているかに注目してください。GQLからの投影は、タイトル、惑星と映画に接続した後、惑星の居住者名を返します。 スター・ウォーズのGraphiQLサイトをチェックして、 GraphQLのクエリーを試してみてください。

スキーマの定義

GraphQLでは 、スキーマはルート実行クエリと突然変異 、およびデータの定義します。

スキーマオブジェクト型

Person型には2つのフィールドがあり、1つは標準的なScalar型であり、もう1つは「friends」である他のPerson型のリストとの関係を表します。他のタイプをリンクすることは、GraphQLを非常に強力にするものです。 GraphQLクエリ言語(GQL)では、クライアントは追加のコードや高度なクエリを実行することなく、フレンドグラフをトラバースできます。

type Person {
  id: ID
  name: String
  friends: [Person]
}

スキーマ問合せ

personクエリは、そのpersonのIDによって1人のperson検索します。これは、GQLを使用するクライアントのデータへのエントリポイントです。

type Query {   
  person(id: ID!): Person
}

Nickさんのフレンドフレンドのフレンドを検索する

PersonタイプとPersonルートクエリーを取得したので、私たちは人物を検索することができます。

query {
  person(id: 'nick'){
    id
    name
    friends{
      id
      name
      friends{
        id
        name
        friends{
          id
          name
        }
      }
    }
  }
}


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow