graphql チュートリアル
graphqlを使い始める
サーチ…
備考
GraphQLはAPI用のクエリ言語であり、既存のデータでこれらのクエリを実行するためのランタイムです。 GraphQLは、APIのデータの完全で分かりやすい説明を提供し、クライアントに必要なものを何でも尋ねる能力を与え、時間の経過とともにAPIを進化させやすくし、強力な開発ツールを可能にします。
GraphQLはいつ使うべきですか?
GraphQLは、あらゆる種類のアプリケーション向けの外向きのHTTP APIを意図していますが、高度に相互接続されたコレクション|テーブル|ノードでデータが正規化されると最も強力です。 GraphQL Query Language(GQL)は、非常に直感的で柔軟な方法で相互接続されたデータを投影するように設計されています。
実装
GraphQL自体は仕様であり、さまざまなプログラミング言語で実装されています。これらは最も一般的なサポート言語です
- GraphQL.js
- グラフルビルビ
- グラフェン(Python)
- サングリア(スカラ)
- graphql-java
- graphql-clj(Clojure)
- グラフ - ゴー
- graphql-php
- graphql-dotnet(C#/ .Net)
- アブサン(エリクサー)
クライアントライブラリ
クライアント側から問合せを実行するには、任意の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 graphql
:npm 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スキーマからすべての映画タイトルのクエリ
スター・ウォーズ映画「新しい希望」への惑星居住者への質問
ルートクエリー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
}
}
}
}
}