type Project { name: String tagline: String contributors: [User]}
{ project(name: "GraphQL") { tagline }}
{ "project": { "tagline": "A query language for APIs" }}
GraphQLはAPIのためのクエリ言語であり、既存のデータでそれらのクエリを満たすためのランタイムです。GraphQLは、API内のデータの完全で理解可能な記述を提供し、クライアントが必要なものを正確に要求する力を与え、APIを時間の経過とともに進化させることを容易にし、強力な開発者ツールを可能にします。
GraphQLクエリをAPIに送信して、必要なものを正確に取得し、それ以上でもそれ以下でもありません。GraphQLクエリは常に予測可能な結果を返します。GraphQLを使用するアプリは、サーバーではなく取得するデータを制御するため、高速で安定しています。
GraphQLクエリは、1つのリソースのプロパティだけでなく、それらの間の参照もスムーズに追跡します。一般的なREST APIでは複数のURLからロードする必要がある一方、GraphQL APIはアプリに必要なすべてのデータを1つのリクエストで取得します。GraphQLを使用するアプリは、モバイルネットワークの接続が遅くても高速に動作します。
GraphQL APIは、エンドポイントではなく、型とフィールドの観点から編成されています。単一のエンドポイントからデータのすべての機能にアクセスします。GraphQLは型を使用して、アプリが必要なものだけを要求し、明確で役立つエラーを提供できるようにします。アプリは型を使用して、手動での解析コードの記述を回避できます。
エディターを離れることなく、APIからリクエストできるデータを正確に把握し、クエリを送信する前に潜在的な問題を強調表示し、改善されたコードインテリジェンスを活用します。GraphQLを使用すると、次のような強力なツールを簡単に構築できます。 GraphiQL APIの型システムを活用して。
既存のクエリに影響を与えることなく、GraphQL APIに新しいフィールドと型を追加します。古いフィールドは非推奨にして、ツールから非表示にすることができます。GraphQL APIは、単一の進化するバージョンを使用することで、アプリが新しい機能に継続的にアクセスできるようにし、よりクリーンで保守しやすいサーバーコードを促進します。
GraphQLは、特定のストレージエンジンに制限されることなく、アプリケーション全体で統一されたAPIを作成します。多くの言語で利用可能なGraphQLエンジンを使用して、既存のデータとコードを活用するGraphQL APIを作成します。型システム内の各フィールドに関数を提供すると、GraphQLはそれらを最適な並行性で呼び出します。
Facebookのモバイルアプリは2012年からGraphQLで駆動されています。GraphQLの仕様は2015年にオープンソース化され、現在では多くの環境で利用可能であり、あらゆる規模のチームによって使用されています。