次の方法で共有


チュートリアル:API を変換および保護する

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

このチュートリアルでは、API を保護または変換するためのポリシーの構成について説明します。 ポリシーは、API の動作を変更するステートメントのコレクションであり、API の要求または応答に対して順番に実行されます。

たとえば、カスタム応答ヘッダーの設定が必要な場合があります。 または、開発者が API を使いすぎないように、レート制限ポリシーを構成してバックエンド API を保護します。 これらは、API Management ポリシーがどのようなものかを示す簡単な例です。 その他のポリシー オプションについては、「API Management ポリシー」をご覧ください。

Note

既定では、API Management はグローバル forward-request ポリシーを構成します。 ゲートウェイがバックエンド サービスへの要求を完了するには、forward-request ポリシーが必要です。

このチュートリアルでは、次の作業を行う方法について説明します。

  • カスタム応答ヘッダーを設定するように API を変換する
  • レート制限ポリシー (スロットリング) を追加して API を保護する
  • 変換をテストする

ポータルの API Management ポリシーのスクリーンショット。

前提条件

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

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

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

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

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

元の応答をテストする

元の応答を表示するには:

  1. API Management サービス インスタンスで、 [API] を選択します。
  2. API の一覧から Swagger Petstore を選びます。
  3. 画面の上部にある [テスト] タブを選択します。
  4. [GET Finds pets by status] を選び、必要に応じて、status クエリ パラメーターの別の値を選びます。 [Send] を選択します。

元の API 応答は、次に示す応答のようになります。

ポータルでの元の API 応答のスクリーンショット。

カスタム応答ヘッダーを追加するように API を変換する

API Management には変換ポリシーがいくつか含まれており、要求または応答のペイロード、ヘッダー、状態コードを変更するために使用できます。 この例では、API の応答でカスタム応答ヘッダーを設定します。

変換ポリシーを設定する

このセクションでは、set-header ポリシーを使ってカスタム応答ヘッダーを構成する方法を説明します。 ここでは、ポリシーを簡単に構成できるフォーム ベースのポリシー エディターを使います。

  1. [Swagger Petstore]>[デザイン]>[すべての操作] を選びます。

  2. [送信処理] セクションで、[ポリシーの追加] を選択します。

    ポータルで送信ポリシーに移動するスクリーンショット。

  3. [送信ポリシーの追加] ウィンドウで、[ヘッダーの設定] を選択します。

    ポータルでヘッダーの設定ポリシーを構成するスクリーンショット。

  4. ヘッダーの設定ポリシーを構成するには、次の操作を行います。

    1. [名前] に「カスタム」と入力します。
    2. [値][+ 値の追加] を選びます。 「カスタムの値」と入力します。
    3. [保存] を選択します。
  5. 構成が済むと、[送信処理] セクションに set-header ポリシー要素が表示されます。

    ポータルの [ヘッダーの設定] 送信ポリシーのスクリーンショット。

レート制限ポリシー (調整) を追加して API を保護する

このセクションでは、開発者が API を使いすぎないように、レート制限を構成してバックエンド API に保護を追加する方法について説明します。 この例では、コード エディターを使って rate-limit-by-key ポリシーを構成する方法を示します。 この例では、制限を 15 秒あたり 3 回の呼び出しに設定します。 15 秒後、開発者は、API の呼び出しを再試行できます。

Note

このポリシーは従量課金レベルではサポートされていません。

  1. [Swagger Petstore]>[デザイン]>[すべての操作] を選びます。

  2. [受信処理] セクションで、コード エディター (</>) アイコンを選択します。

    ポータルで受信ポリシー コード エディターに移動するスクリーンショット。

  3. 空の行で <inbound> 要素内にカーソルを配置します。 次に、画面の右上隅にある [スニペットの表示] を選択します。

    ポータルの受信ポリシー エディターで [スニペットの表示] を選択するスクリーンショット。

  4. 右側のウィンドウの [アクセス制限ポリシー] で、[Limit call rate per key](キーごとの呼び出しレートの制限) を選択します。

    <rate-limit-by-key /> 要素は、カーソル位置に追加されます。

    ポータルにキー ポリシーごとの制限呼び出しレートを挿入するスクリーンショット。

  5. <inbound> 要素内の <rate-limit-by-key /> コードを次のコードに変更します。 次に、 [保存] を選択します。

    <rate-limit-by-key calls="3" renewal-period="15" counter-key="@(context.Subscription.Id)" />
    

変換をテストする

この時点でコード エディターのコードを確認すると、ポリシーは次のコードのようになります。

<policies>
     <inbound>
         <rate-limit calls="3" renewal-period="15" counter-key="@(context.Subscription.Id)" />
         <base />
     </inbound>
     <outbound>
         <set-header name="Custom" exists-action="override">
             <value>"My custom value"</value>
           </set-header>
         <base />
     </outbound>
     <on-error>
         <base />
     </on-error>
 </policies>

このセクションの残りの部分では、この記事で設定したポリシー変換をテストします。

カスタム応答ヘッダーをテストする

  1. [Swagger Petstore]>[テスト] を選びます。

  2. [GET Finds pets by status] を選び、必要に応じて、status クエリ パラメーターの別の値を選びます。 [Send] を選択します。

    ご覧のように、カスタム応答ヘッダーが追加されています。

    ポータルでのカスタム応答ヘッダーを示すスクリーンショット。

レート制限 (調整) をテストする

  1. [Swagger Petstore]>[テスト] を選びます。

  2. [GET Finds Pets by Status] 操作を選びます。 [送信] を数回続けて選びます。

    構成された期間内に送信された要求が多すぎると、429 Too Many Requests 応答が返されます。

    ポータルの応答で [要求が多すぎます] を示すスクリーンショット。

  3. 15 秒以上待ってから [送信] をもう一度選択します。 今度は "200 OK" 応答が返されます。

まとめ

このチュートリアルでは、次の作業を行う方法を学びました。

  • カスタム応答ヘッダーを設定するように API を変換する
  • レート制限ポリシー (スロットリング) を追加して API を保護する
  • 変換をテストする

次のステップ

次のチュートリアルに進みます。