GraphQLは、RESTの代替として作られたAPIとの通信方法である。
GraphQLは、Facebookとその開発者コミュニティによって開発されたAPI用のクエリ言語である。2018年6月に初公開され、現在では市場に広く認知された成熟した技術となっている。その結果、認知度も高く、多くの企業が導入を選択している。RESTがどのように違うのかを説明するためには、現在でも最も広く使われているRESTについて見てみる必要がある:RESTとそのベースとなっているものだ。GraphQLはRESTの主要な問題を解決しているため、しばしばRESTの後継と呼ばれています。ご存知のように、これは一種の古いシステム設計に基づいている。それによると、各データモデルは別々のアドレスで利用できる。例えば、洋服のオンラインショップの場合、カート、倉庫、商品、その他多くのアドレスを持つことができる。
実際、このようなアドレスの数は決して少なくなく、それどころかシステムとともに増えていくだろう。ほとんどすべてのアドレスに対して、get、post、put、deleteのリクエストを処理するための一連のコールを作成する必要があることを覚えておいてほしい。その結果、管理するアドレスの数が膨大になり、データを取得するために必要な呼び出しの数もさらに膨大になる。GraphQLはまったく異なる方法で動作する。私たちがデータをリクエストできるアドレスは1つだけで、真実のソースは1つだけです。何が得られるかは、私たち自身とクエリの組み立て方だけに依存します。
GraphQLの主な特徴は、APIから取得したいデータを正確に定義する柔軟なクエリを実行できることだ。さらに、この言語ではネストされたクエリを作成することができるため、これらの分野でREST APIよりもさらに優位に立つことができる。
RESTとGraphQLの共通点の1つは、プラットフォームやプログラミング言語に依存しないことである。もう1つの共通点は、同じ操作の冪等性です。RESTアーキテクチャとGraphQLの両方において、検索、変更、削除などの操作は、結果を変えることなく繰り返し使用することができます。
GraphQLの基本要素は次のとおりである:
GraphQLは独自の構文を使用する:SDL(スキーマ定義言語)である。これはAPIのスキーマとその型とフィールドを指定するために使用される。型は type キーワードを使用して宣言され、フィールドはオブジェクトの型ごとに括弧で囲んで追加されます。
GraphQLはまだRESTほど普及していないが、そのコミュニティは急速に成長している。GitHub、Netflix、PayPal、Shopifyなど、すでに多くの主要な採用企業がある。今後さらに増えるのは時間の問題だ。