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

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

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

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

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

前提条件

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

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

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

    Select API Management services

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

    Select your API Management instance

GraphQL スキーマを追加する

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

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

    Screenshot of selecting GraphQL icon from list of APIs.

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

    Screenshot of fields for creating a 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. [+ リゾルバーの追加] を選択します。

      Screenshot of adding a GraphQL resolver in the portal.

  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>
    

    Screenshot of configuring resolver policy in the portal.

  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. クエリ エディターで入力を開始して、クエリを作成します。

      Screenshot of adding fields to the query editor.

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

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

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

    Screenshot of viewing the test query response.

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

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

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

GraphQL 固有の攻撃から保護するために、既存のアクセス制御ポリシーGraphQL 検証ポリシーの両方を適用することで、GraphQL API をセキュリティで保護します。

次のステップ