Drupal 8を使用したGraphQL:知っておくべきすべてのガイド(例付き!)
公開: 2019-12-17GraphQLはHTTPでDrupalと通信し、出力はこれまでになく構造化されています。
今日、優れたカスタマーエクスペリエンスは、優れたコンテンツから始まります。 どこでも利用できるコンテンツ。 Drupal 8のAPIファーストイニシアチブにより、Drupalによって管理されるコンテンツは、HTTPを介して他のシステムで簡単に使用できます。 REST(Representational State Transfer)は、APIの設計標準を提供します。 ただし、クライアントアプリケーションがより複雑で困難になるにつれ、開発者はより現代的で効果的なソリューションを必要としています。

GraphQLは、より柔軟で強力なクライアント/サーバー相互作用の要求から生まれました。 洗練されたクエリ言語であり、実行マシンです。 2012年、Facebookはその仕様を作成しました。この仕様には、ヘッドレスアプリケーションの機能とデータモデルの要件が記載されています。
GraphQLとは何ですか?
GraphQLはAPIの適応標準であり、これらのクエリを実行するためのランタイムを提供します。 GraphQLは、APIの情報の完全で合理的な詳細を提供します。 それは「必要なものを求め、それを正確に得る」というイデオロギーで開発されました。 これにより、クライアントはAPIから必要な正確な応答を取得できるようになり、それ以上でもそれ以下でもありません。
GraphQLの利点
DrupalにGraphQLを使用することの多くの利点のいくつか-
- フロントエンド開発の高速化
新しいバックエンドエンドポイントを待たずに、アプリケーションをすばやく強調します。 必要な形でデータを取得することにより、データのフェッチとコードのメンテナンスを改善します。 - 必要なものを尋ねて、それを正確に入手してください
クライアントが要求した正確な応答を提供します。 常に予測可能な結果を返します。 GraphQLを使用するアプリケーションも、サーバーではなく、取得するデータをアプリケーションが制御するため、安定しています。 - 既存のデータを使用する
GraphQLは、REST、SOAP、既存のデータベースなど、既存のインフラストラクチャで使用できます。 これにより、1つのリクエストですべてのデータをクエリでき、クリーンな予測可能な応答が提供されます。 - より少ないバイトとラウンドトリップ
GraphQLを使用すると、必要なすべてのデータを単一のクエリを使用してフェッチできます。 それは
アプリケーションを高速化します。

Drupal8を使用したGraphQL
RESTとJSON:APIとGraphQL
リクエストの効率に応じてこれら3つを比較すると、JSON:APIとGraphQLが優れています。 単一のリクエストでJSON:APIとGraphQlが必要なすべての応答を提供できるためです。 JSON:APIの場合、応答を調整する必要がある場合がありますが、GraphQLに関しては、必要なものだけを提供します。 共通のニーズを満たすには複数のリクエストが必要なため、RESTはこれらに比べて低速です。
操作の単純さと実装の観点から、RESTは最も簡単で、かなり前から存在しています。 JSON:APIは、CDNおよびリバースプロキシでもすぐに使用できます。 GraphQLの場合、追加のインフラストラクチャが必要であり、それを実装するにはクライアントライブラリが必要です。
GraphQLと比較して、RESTおよびJSON:APIでWebキャッシュを使用する方が簡単です。 GraphQLでは、すべてのクエリが送信されるエンドポイントは1つだけです(ほとんどの場合、HTTP POSTエンドポイント)。 各クエリは異なる可能性があるため、このタイプのキャッシュを使用するのは困難です。
Drupal GraphQL仕様は、すでに実装したミューテーションのバルク/バッチ操作を自動的にサポートしますが、JSON:API仕様はサポートしません。 バッチ書き込み操作を実行する機能が重要になる場合があります。
Drupal8用のGraphQLのインストール
Drupal GraphQLモジュールは、すべてのGraphQL仕様をサポートし、GraphQLスキーマの構築と公開に使用できます。 バージョン8.x-4のDrupal8モジュールの最新のアルファリリースは、プラグインを使用してスキーマを拡張するためのDrupalモジュールの機能を提供します。
ここからDrupalGraphQLモジュールをインストールできます-https://www.drupal.org/project/graphql
composerコマンドを使用してインストールできます。
作曲家は 'drupal /graphql:^3.0'を必要とします
GraphQLCoreとGraphQLの2つのモジュールを提供します。 両方のモジュールを有効にする必要があります。 あなたはdrushを使用してそれを有効にすることができます例えば
drush engraphql drush engraphql_core
DrupalGraphQLを使用したクエリ
Drupal GraphQLモジュールは、 GraphiQLと呼ばれるツールを提供します。 これは強力なツールであり、オートコンプリートなどの機能を備えたインタラクティブなUIを備えています。 このツールを使用すると、クエリを実行して出力を取得できます。 インターフェイスの「 / graphql / explorer 」に移動します。
次のようなUIが表示されます–

GraphiQL UI
このUIの左側のパネルにはクエリを記述でき、右側には結果がJSON形式の出力として表示されます。 右上隅にあるドキュメントをクリックすると、利用可能なクエリのドキュメントが表示されます。 左下のパネルの[クエリ変数]セクションを使用して、クエリ変数を渡すことができます。
例
1.ノードのクエリ

DrupalGraphQL-ノードのクエリ
2.分類法のクエリ

DrupalGraphQL-分類法のクエリ
3.ルートのクエリ

DrupalGraphQL-ルートのクエリ
4.クエリフラグメント

DrupalGraphQL-クエリフラグメント
5.フィルター

DrupalGraphQL-フィルター
6.接続詞付きのフィルター

DrupalGraphQL-接続詞を使用したフィルター
その他の使用可能な演算子は次のとおりです。

- 同等
- NOT_EQUAL
- より小さい
- SMALLER_THAN_OR_EQUAL
- GREATER_THAN
- GREATER_THAN_OR_EQUAL
- の
- ありませんで
- お気に入り
- 好きじゃない
- の間に
- NOT_BETWEEN
- 無効です
- IS_NOT_NULL
接続詞は2つの値を持つことができます
- と
- また
グループを使用して、より複雑なクエリを作成することもできます。
7.GraphQL変数

DrupalGraphQL-変数
突然変異
GraphQLでは、ミューテーションとは、サーバーに保存されているデータを追加、変更、または削除するときに使用される用語です。 この場合、Drupalです。 残念ながら、GraphQLのいくつかの技術的要件のため、モジュールには、箱から出して一般的なミューテーションを実行する方法が含まれていません。
作成、削除、更新、およびファイルのアップロードのサンプルコードは、https://github.com/drupal-graphql/graphql-examplesにあります。
突然変異の例:

DrupalGraphQL-ミューテーションの例
Twigを使用したDrupalGraphQL
Drupal GraphQLをTwigで使用すると、Webサイトのパフォーマンスを大幅に向上させることができます。 方法は次のとおりです– Twigテンプレートにデータを挿入すると、1回のAPI呼び出しを使用して必要なすべてのデータをフェッチできます。 さらに、クライアントはサーバーではなく取得するデータを制御するため、プロセスがさらに高速になります。
Drupal GraphQLをTwigで使用するには、GraphQLTwigモジュールが必要です。 ダウンロードして有効にするには、次のコマンドを使用します。
作曲家は 'drupal /graphql_twig:^1.0'を必要とします drush engraphql_twig
そして、あなたはあなたのウェブサイトでGraphQLクエリを使うことができます例えば
{#graphql
クエリ{
admin:userById(id: "1"){
uid
名前
}
user:currentUserContext {
uid
}
}
#}GraphQL変数で応答データを取得します。
