Persisted Queries
Persisted Queries低レベルPersisted Queryの編集

低レベルPersisted Queryの編集

Included in the “Power Extensions” bundle

Persisted Queryを編集する際に、通常は非表示のディレクティブ(GraphQLサーバーに機能を注入するもの)を表示します。

説明

GraphQLにおいて、ディレクティブはフィールドの結果を変更できる関数です。たとえば、@strUpperCase ディレクティブはフィールドの値を大文字形式に変換します。

ディレクティブには2種類あります。スキーマに適用され、すべてのクエリで常に実行されるものと、クライアント側でユーザーまたはアプリケーションによってクエリに適用されるものです。

Gato GraphQLでは、クエリを解決する際に関わる多くの機能が、スキーマに適用されたディレクティブを通じて実行されます。

たとえば、Cache Controlはスキーマに @cacheControl ディレクティブを適用することで機能します。この設定はデフォルトで非表示になっており、プラグインがユーザーインターフェースを通じて実行します。

キャッシュコントロールポリシーの定義

同様に、以下のディレクティブはフィールドのアクセス制御を提供します(そして同様のディレクティブがディレクティブのアクセス制御を提供します)。

  • @disableAccess
  • @validateIsUserLoggedIn
  • @validateIsUserNotLoggedIn
  • @validateDoesLoggedInUserHaveAnyRole.
  • @validateDoesLoggedInUserHaveAnyCapability
  • @validateDoesVisitorComeFromAnyAllowedIP
  • @validateDoesVisitorNotComeFromAnyDeniedIP

この Low-Level Persisted Query Editing 拡張機能は、Persisted Queryを編集する際に、スキーマに適用されるすべてのディレクティブをGraphiQLエディターで利用できるようにします。これにより、ユーザーインターフェースを使わずに、スキーマタイプのディレクティブをPersisted Query内に直接追加できます。

Persisted Queriesエディターで利用可能なスキーマタイプのディレクティブ

たとえば、Cache Controlの定義はPersisted Query内で直接行うことができます。フィールドに maxAge 引数を持つ @cacheControl ディレクティブを設定するか、対応する @validate... ディレクティブをフィールドに直接追加することでアクセス制御を定義できます。

スキーマタイプのディレクティブ