次の方法で共有


Forward request

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

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

Important

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

Note

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

Policy statement

<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"/>

Attributes

Attribute Description Required Default
timeout バックエンド サービスによって返される HTTP 応答ヘッダーを待機する秒単位の時間。この時間を過ぎると、タイムアウト エラーが発生します。 最小値は 0 秒です。 この時間を過ぎると基盤となるネットワーク インフラストラクチャによってアイドル接続がドロップされる可能性があるため、240 秒より大きい値は受け入れられません。 ポリシー式を使用できます。 timeout または timeout-ms を指定できますが、両方を指定することはできません。 No 300
timeout-ms タイムアウト エラーが発生するまでにバックエンド サービスから HTTP 応答ヘッダーが返されるまでの待機時間 (ミリ秒単位)。 最小値は 0 ミリ秒です。 ポリシー式を使用できます。 timeout または timeout-ms を指定できますが、両方を指定することはできません。 No N/A
continue-timeout バックエンド サービスによって返される 100 Continue 状態コードを待機する秒単位の時間。この時間を過ぎると、タイムアウト エラーが発生します。 ポリシー式を使用できます。 No N/A
http-version バックエンド サービスに HTTP 要求を送信するときに使用する HTTP プロトコルのバージョン:
- 1: HTTP/1
- 2: HTTP/2
- 2or1: ゲートウェイは HTTP/1 よりも HTTP/2 を優先しますが、HTTP/2 が機能しない場合は HTTP/1 にフォールバックします。

HTTP/2 送信は、一部のゲートウェイでサポートされています。 詳細については 、使用状況に関するメモ を参照してください。
No 1
follow-redirects バックエンド サービスからのリダイレクトについて、その後にゲートウェイが続くか、それとも呼び出し元に返されるかを指定します。 ポリシー式を使用できます。 No false
buffer-request-body true に設定した場合、要求がバッファーされ、再試行で再利用されます。 No false
buffer-response チャンクされた応答の処理に影響します。 false に設定すると、バックエンドから受け取った各チャンクが即時に呼び出し元に返されます。 true に設定すると、チャンクがバッファーされます (ストリームの末尾が検出されない場合は 8 KB)。その後にのみ、呼び出し元に返されます。

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

Usage

Usage notes

  • ゲートウェイからバックエンドへの HTTP/2 プロトコル送信を有効にするには、 http-version 属性を使用します。 属性を 2or1 または 2 に設定します。 現在、HTTP/2 送信はセルフホステッド ゲートウェイと v2 ゲートウェイのプレビューでサポートされています。

    Important

    v2 ゲートウェイでは、HTTP/2 は API Management ゲートウェイへの受信と、ゲートウェイからバックエンドへの送信がサポートされますが、エンド ツー エンドではサポートされません。 現在、v2 ゲートウェイは、要求をバックエンドに転送する前に、受信 HTTP/2 接続を HTTP/1 にダウングレードします。

Examples

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

次の API レベルのポリシーは、すべての API 要求を HTTP/2 バックエンド サービスに転送します。 たとえば、このポリシーを使用して、セルフホステッド ゲートウェイから gRPC バックエンドに要求を転送します。

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

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

次の 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>

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