DataPower API Gateway のみ

GraphQL スキーマ・エディター の使用

GraphQL スキーマ・エディター では、 GraphQL 要求の複雑さを計算するために使用される設定の範囲、およびレート制限にカウントされる関連コストを構成できます。

概要

GraphQL スキーマ・エディター が開くと、 GraphQL スキーマで定義されているすべてのタイプがリストされます。 タイプを展開すると、そのタイプに定義されているすべてのフィールドを表示できます。

タイプごとに、以下の設定を指定できます。
タイプの重み
GraphQL API に対する要求のタイプのコストを計算する際に使用される、タイプに適用する加重係数。 一般に、タイプの加重係数は、そのタイプの値を取得する要求の、リソースへの影響を反映します。以下に例を示します。
  • 複合オブジェクトは、ストリングより重くなる可能性があります。
  • あるタイプの値が別のバックエンド・データベースの別のタイプの値から取得される場合があります。この場合、1 つのデータベースへのアクセスにより多くの CPU リソースが必要になり、このデータベースに関連付けられたタイプの重みはより高くなります。
フィールドごとに、以下の設定を指定できます。
フィールドの重み
GraphQL API に対する要求のフィールド・コストを計算する際に使用される、フィールドに適用する加重係数。
想定サイズ
API 要求でフィールドを取得する度にリスト形式で返されるそのフィールドの値の数に、バックエンド・サーバーが設けるサイズ制限。 インポートされた GraphQL スキーマでこのフィールドに想定サイズが定義されている場合は、その値が表示されます。 値を入力するか、現行値を変更すると、 API Connect に保管されているスキーマ定義がそれに応じて更新されます。 API Connect がレート制限を正しく適用できるように、指定された値がバックエンド・サーバー上の実装または構成に対応していることを確認する必要があります。 想定サイズは、想定される値の数をコスト分析に通知するために、値のリストを返すフィールドに対して構成されるものです。
スライス引数
API 要求でフィールドを取得する度にリスト形式で返されるそのフィールドの値の数を制限するために、バックエンド・サーバーが使用する引数のコンマ区切りリスト。 これらは、バックエンド・サーバーの実装または構成に対応している必要があります。 例えば、API 要求によって返されるオブジェクトの範囲を指定するために使用される、スライス引数 firstlast があります。
サイズ設定されたフィールド
場合によっては、「想定サイズ」または「スライス引数」の設定が構成されたフィールドによってオブジェクトが返され、そのオブジェクトのフィールドで、サイズ設定される数値を持つ値が返されることがあります。 これは、 ページネーションの接続パターンでよく見られるもので、スライシング引数を持つフィールド first 、あるいは `sized` フィールド edges にサイズ指定されたリスト last を含む ` connections object` を返すフィールドがあります。 「サイズ設定されたフィールド」オプションを使用すると、想定サイズまたはスライス引数とサイズ設定された値のリストとの間のこれらの間接的な関係を、コスト分析で考慮することができます。 フィールド名のコンマ区切りリストを指定してください。

GraphQL スキーマ・エディター には、以下のいずれかの方法でアクセスします。

  • 新規 GraphQL プロキシー API の作成直後に、「API の編集」をクリックし、次に「GraphQL スキーマ」タブをクリックします。 GraphQL プロキシAPIの作成方法については、 「 GraphQL プロキシAPIの作成」 を参照してください。
  • 既存の API の構成を変更します。以下のステップを実行します。
    1. ナビゲーション ペインで [開発] API UI ナビゲーション・ペインの「開発」アイコン をクリックし、 [API ] タブを選択します
    2. 操作したい GraphQL APIの定義の横にあるオプションアイコンをクリックし、[ APIを 「オプション」アイコン 編集]をクリックします。
    3. GraphQL 「スキーマ」 タブをクリックします。

単一のタイプまたはフィールドの設定の変更

数値の設定の場合は、必要なタイプまたはフィールドの横にある設定をクリックし、必要な値を入力するかステッパー・コントロールを使用します。 テキスト値を持つ設定の場合は、値を直接入力します。 最初に、表示をフィルタリングして、タイプとフィールドの関連サブセットのみを表示することをお勧めします。 表示のフィルタリングを参照してください。

複数のタイプおよびフィールドの設定の変更

複数のタイプおよびフィールドの設定を 1 回の操作で変更するには、以下のステップを実行します。

  1. 設定を変更するタイプおよびフィールドの横にあるチェック・ボックスを選択します。
  2. 「分析構成の適用」をクリックします。
  3. 「タイプ」タブで、選択したタイプに適用する設定を指定します。
  4. 「フィールド」タブで、選択したフィールドに適用する設定を指定します。
  5. 「適用」をクリックして、選択したタイプおよびフィールドに設定を適用します。
  6. 選択したタイプおよびフィールドに必要な変更をすべて行ったら、「完了」をクリックします。このアクションにより、すべてのチェック・ボックスの設定がクリアされます。

分析の構成を適用した後に、タイプまたはフィールドの設定を初期のデフォルト設定に復元するには、必要なタイプおよびフィールドの横にあるチェック・ボックスを選択し、「分析の構成を削除」をクリックします。

最初に、表示をフィルタリングして、タイプとフィールドの関連サブセットのみを表示することをお勧めします。 表示のフィルタリングを参照してください。

表示のフィルタリング

指定したストリングを含むタイプおよびフィールドのみを表示するには、「スキーマの検索」フィールドに必要なフィルター・ストリングを入力し、Enter を押します。

タイプがフィルターと一致した場合、そのタイプとそのすべてのフィールドが表示されます。 フィールドがフィルターと一致していても、その親タイプが一致しない場合、一致するすべてのフィールドと一緒に親タイプが表示されます。 複数のフィルター・ストリングを入力できます。表示される項目は、すべてのストリングを含む項目です。

単一のタイプまたはフィールドの設定の変更 および 複数のタイプおよびフィールドの設定の変更 で説明されている操作を使用して、表示されているタイプおよびフィールドの設定を更新できるようになりました。

検索から特定のフィルター文字列を削除するには、そのフィルター文字列の 「閉じる GraphQL 検索フィルターをクリアするためのアイコン 」アイコンをクリックします。 すべてのフィルタ条件を解除して、タイプとフィールドの表示を元に戻すには、検索フィールドの右端にある「 すべての GraphQL 検索フィルターをクリアするためのアイコン クリア 」アイコンをクリックしてください。

GraphQL スキーマの警告

該当する場合、 API Connect は、バックエンド・サーバーを過剰なリソース使用から保護し、要求のコスト見積もりを正しく行うために、分析構成の更新を推奨します。 これらの推奨は、 GraphQL スキーマ・エディターでは警告として表示されます。

型に警告のあるフィールドが1つ以上含まれている場合、その型の横に警告数の GraphQL 警告カウント・アイコン アイコンが表示されます。 警告件数アイコンをクリックすると、その種類の警告を確認できます。 警告ウィンドウが開き、該当する警告が表示されます。例えば:
GraphQL の警告の例

警告が表示されているフィールドを確認するには、そのタイプを展開してください。警告があるフィールドの横には警告アイコン GraphQL 警告アイコン が表示されます。 フィールドに対する警告の詳細を確認するには、そのフィールドの横 GraphQL 警告アイコン にある警告アイコンをクリックしてください

「警告」 ウィンドウで警告の下にある 「受け入れ」 をクリックすると、推奨される更新がスキーマに自動的に適用されます。

単一の操作ですべての警告に対して推奨される更新を適用するには、 「警告」 ウィンドウで 「すべて適用」 をクリックしてから、 「適用」 をクリックして確認します。

警告が表示されているアイテムのみを表示するようにフィルタリングできます。 メニュー アイコン GraphQL メニュー・アイコンをクリックし、「 警告のみを表示 」を選択してください。

GraphQL スキーマのタイプおよびフィールドへの @remove ディレクティブの適用

@remove GraphQL スキーマ・ディレクティブは、API コンテキスト内の値に基づいて、各トランザクションの検証やイントロスペクションから項目を除去する条件を指定します。 例えば、特定のプランで特定のタイプやフィールドが使用されないようにすることができます。

@remove ディレクティブの詳細 (例を含む) については、 rapic_graphql_extensions.html#reference_wrt_bk1_5mb__at_removeを参照してください。

GraphQL スキーマの項目に @remove ディレクティブを適用するには、以下のステップを実行します。
  1. 目的の項目の横にある「 の表示/非表示」の横にある GraphQL 設定アイコン 設定アイコンをクリックしてください。 「表示/非表示の設定」 ウィンドウが開きます。
  2. ブール条件に基づいて項目を削除するには、「カスタム式」フィールドにブール式を入力します。これにより、スキーマ内の項目に次のディレクティブが追加されます。
    @remove(if: [expression])
    無条件で項目を削除するには、「スキーマで表示」スライダー・コントロールを「スキーマで非表示」に変更します。これにより、スキーマ内の項目に次のディレクティブが追加されます。
    @remove(if: ["true"])
  3. 次へ をクリックします。 要約ウィンドウが開きます。 削除が許可された場合、@remove ディレクティブが適用される関連項目もリストされます。例えば、@remove ディレクティブをあるタイプに適用し、そのタイプが別のタイプのフィールドのデータ・タイプとして参照されている場合、@remove ディレクティブはそのフィールドにも適用されます。 削除が許可されない場合は、説明が表示されます。
  4. 削除が許可された場合は、「完了」をクリックして @remove ディレクティブを適用します。 削除が許可されない場合は、「キャンセル」をクリックしてウィンドウを閉じるか、「戻る」をクリックして設定を修正します。
  5. GraphQL JSON スキーマへの更新を表示するには、「ソースの表示」をクリックします。

設定アイコン GraphQL 設定アイコン をクリックすると、以前に適用 @remove した設定を変更または削除できます。 条件付きの @remove ディレクティブを削除するには、「カスタム式」フィールドから式を削除します。 無条件の @remove ディレクティブを削除するには、「スキーマで非表示」スライダー・コントロールを「スキーマで表示」に変更します。

GraphQL スキーマの表示

前にアップロードされた GraphQL JSON スキーマを表示するには、「ソースの表示」をクリックします。 スキーマには、 API Connectによって追加された、構成設定を反映する directive ステートメントと属性値が含まれていることに注意してください。

GraphQL スキーマの置換

GraphQL スキーマを置き換えるには、以下のステップを実行します。

  1. 「置換」をクリックします。
  2. 新しく置き換わるスキーマを指定します。
    • URL をイントロスペクトすることでスキーマを置き換えるには、以下のステップを実行します。
      1. URL からイントロスペクトを選択します。
      2. 「GraphQL サーバー URL」フィールドに URL を入力して、「イントロスペクト」をクリックします。
      注: URL からバックエンドの GraphQL サーバーとして指定されたものとは異なるスキーマに置き換えた場合、 GraphQL サーバーの URL フィールドでは、 GraphQL プロキシAPIが作成された際にスキーマ自体は置き換えられますが、バックエンドの URL は変更されません。 URL 設定を適宜変更する必要があります。 invoke GraphQL プロキシ API の API アセンブリ内のポリシー。
    • ファイルをアップロードすることでスキーマを置き換えるには、以下のステップを実行します。
      1. 「スキーマ定義言語 (SDL) ファイルをアップロードする」を選択します。
      2. ファイルをドラッグ・アンド・ドロップするか、リンクをクリックして、ローカル・ファイル・システムからファイルを選択します。
      注:
      • スキーマは GraphQL スキーマ定義言語 (SDL) で記述する必要があります。 詳細については、 GraphQL のドキュメント( https://graphql.org/ )の 「Type language」 の項目をご覧ください。
      • 以前に URL からスキーマをアップロードしたローカル・ファイルからスキーマをアップロードした場合、API の OpenAPI ソースに保管されて、その後のユーザー・インターフェースで表示されるスキーマ URL 設定は、ファイルの場所を示すのではなく、以前に指定した URL の値を保持します。
    現在のスキーマから新しく置き換わるスキーマで変更されるすべての内容がリストされます。
  3. 必要に応じてスキーマを更新します。
    • すべての新しいタイプとフィールドをデフォルトで表示するには、「スキーマのデフォルトを更新して、次の設定を優先」設定で「新規スキーマ」を選択します。 次に、目的の項目の横にある「アクション」列で「非表示」を選択することで、特定の項目を非表示にすることができます。 項目を非表示にすると、 @remove ディレクティブがスキーマ・ソース内の項目に追加されます。詳しくは、 GraphQL スキーマのタイプおよびフィールドへの @remove ディレクティブの適用を参照してください。
    • すべての新しいタイプとフィールドをデフォルトで非表示にするには、「スキーマのデフォルトを更新して、次の設定を優先」設定で「旧スキーマ」を選択します。 次に、目的の項目の横にある「アクション」列で「表示」を選択することで、特定の項目を表示することができます。
    注: 現在のスキーマに、置換スキーマに含まれていない項目が含まれている場合、それらの項目は削除されます。 これによって削除された内容は、変更リストに表示され、「アクション」列に「同意する」設定が表示されます。この設定を変更することはできません。
  4. 次へ をクリックします。 変更の要約ページが表示されます。 いずれかの削除が許可されない場合は、説明が表示され、スキーマの置き換えを完了できません。「キャンセル」をクリックしてウィンドウを閉じるか、「戻る」 をクリックして設定を修正してください。
  5. 「サブミット」をクリックして、スキーマの置き換えを完了します。

GraphQL スキーマのダウンロード

GraphQL スキーマをローカル・ファイルにダウンロードするには、「ダウンロード」をクリックします。 ダウンロードしたスキーマには、構成の更新を反映するすべての追加設定が含まれています。