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
- Richtlinienabschnitte: backend
- Richtlinienbereiche: global, Arbeitsbereich, Produkt, API, Vorgang
- Gateways: klassisch, v2, Verbrauch, selbstgehostet, Arbeitsbereich
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>
Verwandte Richtlinien
Zugehöriger Inhalt
Weitere Informationen zum Arbeiten mit Richtlinien finden Sie hier:
- Tutorial: Transformieren und Schützen Ihrer API
- Unter Richtlinien für die API-Verwaltung finden Sie eine komplette Liste der Richtlinienanweisungen und der zugehörigen Einstellungen.
- Richtlinienausdrücke
- Festlegen oder Bearbeiten von Richtlinien
- Wiederverwenden von Richtlinienkonfigurationen
- Repository für Richtliniencodeausschnitte
- Erstellen von Richtlinien mit Microsoft Copilot in Azure