要求の転送

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

forward-request ポリシーは、要求forward-requestに指定されたバックエンド サービスに要求を転送します。 バックエンド サービスの URL は API 設定で指定され、バックエンド サービスの設定ポリシーを使用して変更できます。

重要

  • このポリシーは、API バックエンドに要求を転送するために必要です。 既定では、API Management は、グローバル スコープでこのポリシーを設定します。
  • このポリシーを削除すると、要求がバックエンド サービスに転送されなくなります。 受信セクションのポリシーが正常に完了した時点で送信セクションのポリシーが即座に評価されます。

Note

ポリシーの要素と子要素を、ポリシー ステートメントで指定された順序で設定します。 API Management ポリシーを設定または編集する方法について説明します。

ポリシー ステートメント

<forward-request http-version="1 | 2or1 | 2" timeout="time in seconds (alternatively, use timeout-ms)" | timeout-ms="time in milliseconds (alternatively, use timeout)" continue-timeout="time in seconds" follow-redirects="false | true" buffer-request-body="false | true" buffer-response="true | false" fail-on-error-status-code="false | true"/>

属性

属性 説明 必要 Default
timeout バックエンド サービスによって返される HTTP 応答ヘッダーを待機する秒単位の時間。この時間を過ぎると、タイムアウト エラーが発生します。 最小値は 0 秒です。 この時間を過ぎると基盤となるネットワーク インフラストラクチャによってアイドル接続がドロップされる可能性があるため、240 秒より大きい値は受け入れられません。 ポリシー式を使用できます。 timeout または timeout-ms を指定できますが、両方を指定することはできません。 いいえ 300
timeout-ms タイムアウト エラーが発生するまでにバックエンド サービスから HTTP 応答ヘッダーが返されるまでの待機時間 (ミリ秒単位)。 最小値は 0 ミリ秒です。 ポリシー式を使用できます。 timeout または timeout-ms を指定できますが、両方を指定することはできません。 いいえ 該当なし
continue-timeout バックエンド サービスによって返される 100 Continue 状態コードを待機する秒単位の時間。この時間を過ぎると、タイムアウト エラーが発生します。 ポリシー式を使用できます。 いいえ 該当なし
http バージョン バックエンド サービスに HTTP 応答を送信するときに使用する HTTP 仕様のバージョンです。 2or1 を使用する場合、ゲートウェイは HTTP /2 を /1 よりも優先しますが、HTTP /2 が機能しない場合は HTTP /1 にフォールバックします。 いいえ 1
follow-redirects バックエンド サービスからのリダイレクトについて、その後にゲートウェイが続くか、それとも呼び出し元に返されるかを指定します。 ポリシー式を使用できます。 いいえ false
buffer-request-body true に設定した場合、要求がバッファーされ、再試行で再利用されます。 No false
buffer-response チャンクされた応答の処理に影響します。 false に設定すると、バックエンドから受け取った各チャンクが即時に呼び出し元に返されます。 true に設定すると、チャンクがバッファーされます (ストリームの末尾が検出されない場合は 8 KB)。その後にのみ、呼び出し元に返されます。

コンテンツを呼び出し元にすぐに返したりストリーミングしたりする必要があるサーバー送信イベント (SSE) を実装するバックエンドなどでは、false に設定します。 ポリシー式は使用できません。
いいえ true
fail-on-error-status-code true に設定すると、400 から 599 まで (両端の値を含む) の範囲の応答コードについて、on-error セクションがトリガーされます。 ポリシー式は使用できません。 いいえ false

使用法

HTTP/2 バックエンドに要求を送信する

次の API レベルのポリシーは、すべての API 要求を HTTP/2 バックエンド サービスに転送します。

<!-- api level -->
<policies>
    <inbound>
        <base/>
    </inbound>
    <backend>
        <forward-request http-version="2or1"/>
    </backend>
    <outbound>
        <base/>
    </outbound>
</policies>

これは HTTP /2 または gRPC ワークロードに必要であり、現在はセルフホステッド ゲートウェイでのみサポートされています。 詳細については、「API ゲートウェイの概要」を参照してください。

タイムアウト間隔で要求を転送する

次の API レベル ポリシーは、バックエンド サービスに転送されたすべての API 要求が 60 秒でタイムアウトすることを示します。

<!-- api level -->
<policies>
    <inbound>
        <base/>
    </inbound>
    <backend>
        <forward-request timeout="60"/>
    </backend>
    <outbound>
        <base/>
    </outbound>
</policies>

親スコープからポリシーを継承する

この操作レベル ポリシーは、base 要素を使用して、親 API レベル スコープからバックエンド ポリシーを継承します。

<!-- operation level -->
<policies>
    <inbound>
        <base/>
    </inbound>
    <backend>
        <base/>
    </backend>
    <outbound>
        <base/>
    </outbound>
</policies>

親スコープからポリシーを継承しない

この操作レベル ポリシーは、バックエンド サービスに転送された要求が 120 秒でタイムアウトすることを示し、親 API レベル バックエンド ポリシーを継承しません。 バックエンド サービスが 400 から 599 まで (両端の値を含む) のエラー状態コードで応答する場合は、on-error セクションがトリガーされます。

<!-- operation level -->
<policies>
    <inbound>
        <base/>
    </inbound>
    <backend>
        <forward-request timeout="120" fail-on-error-status-code="true" />
        <!-- effective policy. note the absence of <base/> -->
    </backend>
    <outbound>
        <base/>
    </outbound>
</policies>

バックエンドに要求を転送しない

この操作レベル ポリシーは、バックエンド サービスに要求を転送しません。

<!-- operation level -->
<policies>
    <inbound>
        <base/>
    </inbound>
    <backend>
        <!-- no forwarding to backend -->
    </backend>
    <outbound>
        <base/>
    </outbound>
</policies>

ポリシーに対する処理の詳細については、次のトピックを参照してください。