合成 GraphQL API を追加し、フィールド リゾルバーを設定する

適用対象: すべての API Management レベル

API Management では、2 つのモデルのいずれかで GraphQL API を追加できます。つまり、既存の GraphQL エンドポイントへのパススルーを使用するか、GraphQL スキーマをインポートし、カスタム フィールド リゾルバーで合成 GraphQL API を作成します。 詳細については、GraphQL の概要に関するページを参照してください。

Note

現在、この機能はワークスペースでは使用できません。

この記事では、次のことを行います。

  • API Management インスタンスに GraphQL スキーマをインポートします
  • 既存の HTTP エンドポイントを使用して GraphQL クエリのリゾルバーを設定する
  • GraphQL API をテストする

既存の GraphQL エンドポイントを API として公開する場合は、「GraphQL API のインポート」を参照してください。

前提条件

  • 既存の API Management インスタンスがある。 まだない場合は、作成してください
  • .graphql 拡張子が付いた有効な GraphQL スキーマ ファイル。
  • バックエンド GraphQL エンドポイントは、このシナリオでは省略可能です。

API Management インスタンスに移動します。

  1. Azure portal で、[API Management サービス] を検索して選択します。

    [API Management サービス] を選択する

  2. [API Management サービス] ページで、ご自身の API Management インスタンスを選択します。

    API Management インスタンスを選択する

GraphQL スキーマを追加する

  1. サイド ナビゲーション メニューの [API] セクションで、 [API] を選択します。

  2. [Define a new API](新しい API の定義) で、GraphQL アイコンを選びます。

    API の一覧から GraphQL アイコンを選択しているスクリーンショット。

  3. ダイアログ ボックスで [完全] を選択し、必要なフォーム フィールドを入力します。

    GraphQL API を作成するためのフィールドのスクリーンショット。

    フィールド Description
    [表示名] GraphQL API を表示するときに使用する名前。
    名前 GraphQL API の未加工の名前。 表示名を入力すると自動的に設定されます。
    GraphQL の種類 GraphQL スキーマ ファイルからインポートするには、[Synthetic GraphQL] (合成 GraphQL) を選択します。
    フォールバック GraphQL エンドポイント 必要に応じて GraphQL API エンドポイント名を持つ URL を入力します。 API Management は、カスタム リゾルバーがフィールドに設定されていない場合に、GraphQL クエリをこのエンドポイントに渡します。
    説明 API の説明を追加します。
    URL スキーム GraphQL エンドポイントに基づいて選択します。 GraphQL API にサブスクリプションの種類が含まれている場合は、WebSocket スキーム (WS または WSS) を含むオプションのいずれかを選択します。 既定の選択は HTTP(S) です。
    API URL サフィックス この API Management インスタンスでこの特定の API を識別するための URL サフィックスを追加します。 この API Management インスタンス内で一意である必要があります。
    ベース URL API ベース URL を表示する編集できないフィールド
    タグ GraphQL API を新規または既存のタグに関連付けます。
    製品 GraphQL API を製品に関連付けて発行します。
    この API をバージョン管理しますか? GraphQL API にバージョン管理スキームを適用する場合に選択します。
  4. [作成] を選択します

  5. API が作成されたら、[デザイン] タブでスキーマを参照するか変更します。

リゾルバーを構成する

スキーマ内のフィールドを既存の HTTP エンドポイントにマップするようにリゾルバーを構成します。 ここでは、大まかな手順について説明します。 詳しくは、「GraphQL リゾルバーを構成する」をご覧ください。

次の基本的な GraphQL スキーマをインポートし、 ユーザー クエリのリゾルバーを設定するとします。

type Query {
    users: [User]
}

type User {
    id: String!
    name: String!
}
  1. サイド ナビゲーション メニューの [API] セクションで、[API]>ユーザーの GraphQL API を選択します。

  2. [スキーマ] タブで、リゾルバーを構成するオブジェクト型のフィールド用のスキーマをレビューします。

    1. フィールドを選択し、左の余白にポインターを置きます。

    2. [+ リゾルバーの追加] を選択します。

      ポータルでの GraphQL リゾルバーの追加のスクリーンショット。

  3. [リゾルバーの作成] ページで、次の手順を実行します。

    1. 必要に応じて [名前] プロパティを更新し、任意で [説明] を入力し、[型][フィールド] の選択内容を確認または更新します。
    2. [データ ソース] で、[HTTP API] を選びます。
  4. リゾルバー ポリシー エディターで、使用するシナリオの子要素がある <http-data-source> 要素を更新します。 たとえば、次のリゾルバーでは、既存の HTTP データ ソースの GET 呼び出しを実行して "users" フィールドを取得します。

        <http-data-source>
            <http-request>
                <set-method>GET</set-method>
                <set-url>https://myapi.contoso.com/users</set-url>
            </http-request>
        </http-data-source>
    

    ータルでリゾルバー ポリシーを構成するスクリーンショット。

  5. [作成] を選択します

  6. スキーマ内の別のフィールドのデータを解決するには、前の手順を繰り返してリゾルバーを作成します。

ヒント

リゾルバー ポリシーを編集する際に、[テストの実行] を選択してデータ ソースからの出力を確認します。この出力は、スキーマに対して検証できます。 エラーが発生した場合、応答にはトラブルシューティング情報が含まれます。

GraphQL API をテストする

  1. API Management インスタンスに移動します。

  2. サイド ナビゲーション メニューの [API] セクションで、 [API] を選択します。

  3. [すべての API] の下で、使用する GraphQL API を選択します。

  4. [テスト] タブを選択して、テスト コンソールにアクセスします。

  5. [ヘッダー] で、次のようにします。

    1. [名前] ドロップダウン メニューからヘッダーを選びます。
    2. [値] フィールドに値を入力します。
    3. ヘッダーをさらに追加するには、 [+ ヘッダーの追加] を選びます。
    4. ヘッダーを削除するには、ごみ箱アイコンを使用します。
  6. GraphQL API に製品を追加した場合は、 [Apply product scope](製品スコープの適用) で製品スコープを適用します。

  7. [クエリ エディター] で、以下のいずれかを行います。

    1. サイド メニューの一覧から、少なくとも 1 つのフィールドまたはサブフィールドを選択します。 選択したフィールドとサブフィールドがクエリ エディターに表示されます。

    2. クエリ エディターで入力を開始して、クエリを作成します。

      クエリ エディターにフィールドを追加するスクリーンショット。

  8. [クエリ変数] で、{2}同じクエリまたは変更を再利用し、異なる値を渡す変数を追加します。

  9. [Send] を選択します。

  10. [応答] を表示します。

    テスト クエリ応答の表示のスクリーンショット。

  11. 前の手順を繰り返して、さまざまなペイロードをテストします。

  12. テストが完了したら、テスト コンソールを終了します。

GraphQL API をセキュリティで保護する

GraphQL 固有の攻撃から保護するには、既存の認証および承認ポリシーGraphQL 検証ポリシーの両方を適用して、GraphQL API をセキュリティで保護します。

次のステップ