Weiterleitungsanforderung

GILT FÜR: Alle API Management-Ebenen

Mit der forward-request-Richtlinie wird die eingehende Anforderung an den Back-End-Dienst weitergeleitet, der im Anforderungsforward-request angegeben ist. Die Back-End-Dienst-URL ist in den API-Einstellungen angegeben und kann mit der Richtlinie Back-End-Dienst festlegen geändert werden.

Wichtig

  • Diese Richtlinie ist erforderlich, um Anforderungen an ein API-Back-End weiterzuleiten. Standardmäßig richtet API Management diese Richtlinie für den globalen Bereich ein.
  • Durch das Entfernen dieser Richtlinie wird die Anforderung nicht an den Back-End-Dienst weitergeleitet. Die Richtlinien im ausgehenden Abschnitt werden sofort ausgewertet, wenn die Richtlinien im eingehenden Abschnitt erfolgreich abgeschlossen sind.

Hinweis

Legen Sie die Elemente und untergeordneten Elemente einer Richtlinie in der Reihenfolge fest, die in der Richtlinienanweisung angegeben ist. Erfahren Sie mehr darüber, wie Sie API Management-Richtlinien festlegen oder bearbeiten.

Richtlinienanweisung

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

Attribute

Attribut BESCHREIBUNG Erforderlich Standard
timeout Die Zeitspanne in Sekunden, die darauf gewartet wird, dass der Back-End-Dienst die HTTP-Antwortheader zurückgibt. Danach wird ein Timeoutfehler ausgelöst. Der Mindestwert beträgt 0 Sekunden. Werte, die größer als 240 Sekunden sind, werden möglicherweise nicht berücksichtigt, weil die zugrunde liegende Netzwerkinfrastruktur Verbindungen im Leerlauf nach dieser Zeitspanne möglicherweise trennt. Richtlinienausdrücke sind zulässig. Sie können entweder timeout oder timeout-ms angeben, aber nicht beides. Nein 300
timeout-ms Die Zeit in Millisekunden, die auf die Rückgabe der HTTP-Antwort-Header durch den Back-End-Dienst gewartet wird, bevor ein Timeout-Fehler ausgelöst wird. Der Mindestwert ist 0 ms. Richtlinienausdrücke sind zulässig. Sie können entweder timeout oder timeout-ms angeben, aber nicht beides. Nein
Verbindungstimeout Die Zeitspanne in Sekunden, die darauf gewartet wird, dass der Back-End-Dienst einen Statuscode 100 Continue zurückgibt, bevor ein Timeoutfehler ausgelöst wird. Richtlinienausdrücke sind zulässig. Nein
HTTP-Version Die Version der HTTP-Spezifikation, die beim Senden der HTTP-Antwort an den Back-End-Dienst verwendet werden soll. Bei der Verwendung von 2or1 bevorzugt das Gateway HTTP/2 gegenüber /1, führt jedoch ein Fallback auf HTTP/1 durch, wenn HTTP/2 nicht funktioniert. Nein 1
follow-redirects Gibt an, ob Umleitungen vom Back-End-Dienst vom Gateway verfolgt oder an den Aufrufer zurückgegeben werden. Richtlinienausdrücke sind zulässig. Nein false
buffer-request-body Bei Festlegung auf true wird die Anforderung gepuffert und bei Wiederholung (retry) wiederverwendet. Nein false
buffer-response Wirkt sich auf die Verarbeitung von segmentierten Antworten aus. Wenn der Wert auf false festgelegt ist, wird jeder vom Back-End empfangene Block sofort an den Aufrufer zurückgegeben. Wenn diese Einstellung auf true festgelegt ist, werden Blöcke gepuffert (8 KB, solange das Ende des Datenstroms nicht erkannt wird) und erst dann an den Aufrufer zurückgegeben.

Legen Sie diese Einstellung bei Back-Ends auf false fest, z. B. bei denen, die serverseitig gesendete Ereignisse (Server Sent Events, SSE) implementieren, welche erfordern, dass Inhalt sofort an den Aufrufer zurückgegeben oder gestreamt wird. Richtlinienausdrücke sind nicht zulässig.
Nein true
fail-on-error-status-code Wenn diese Einstellung auf true festgelegt ist, wird der Abschnitt on-error für Antwortcodes im Bereich 400 bis 599 (jeweils einschließlich) ausgelöst. Richtlinienausdrücke sind nicht zulässig. Nein false

Verwendung

Beispiele

Senden einer Anforderung an HTTP/2-Back-End

Die folgende Richtlinie auf API-Ebene leitet alle API-Anforderungen an einen HTTP/2-Back-End-Dienst weiter.

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

Dies ist für HTTP /2- oder gRPC-Workloads erforderlich und wird derzeit nur in selbstgehosteten Gateways unterstützt. Weitere Informationen erhalten Sie in Ihrer API-Gateway-Übersicht.

Anforderung mit Timeoutintervall weiterleiten

Mit der folgenden Richtlinie auf API-Ebene werden alle API-Anforderungen mit einem Zeitüberschreitungsintervall von 60 Sekunden an den Back-End-Dienst weitergeleitet.

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

Richtlinie vom übergeordneten Bereich erben

Bei dieser Richtlinie auf Vorgangsebene wird das base-Element verwendet, um die Back-End-Richtlinie vom übergeordneten API-Ebenenbereich zu erben.

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

Richtlinie nicht vom übergeordneten Bereich erben

Diese Richtlinie auf Vorgangsebene leitet alle Anforderungen mit einer Zeitüberschreitung von 120 explizit an den Back-End-Dienst weiter und erbt die übergeordnete Back-End-Richtlinie auf API-Ebene nicht. Wenn der Back-End-Dienst mit einem Fehlerstatuscode zwischen 400 bis 599 (jeweils einschließlich) reagiert, wird der Abschnitt on-error ausgelöst.

<!-- 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>

Keine Anforderungen an Back-End weiterleiten

Diese Richtlinie auf Vorgangsebene leitet Anforderungen nicht an den Back-End-Dienst weiter.

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

Weitere Informationen zum Arbeiten mit Richtlinien finden Sie hier: