Udostępnij przez


Forward request

DOTYCZY: Wszystkie warstwy usługi API Management

Zasady forward-request przekazują przychodzące żądanie do usługi zaplecza określonej w kontekście żądania. Adres URL usługi zaplecza jest określony w ustawieniach interfejsu API i można go zmienić przy użyciu zasad usługi set backend.

Important

  • Te zasady są wymagane do przekazywania żądań do zaplecza interfejsu API. Domyślnie usługa API Management konfiguruje te zasady w zakresie globalnym.
  • Usunięcie tych zasad powoduje, że żądanie nie jest przekazywane do usługi zaplecza. Zasady w sekcji ruchu wychodzącego są oceniane natychmiast po pomyślnym zakończeniu zasad w sekcji przychodzącej.

Note

Ustaw elementy zasad i elementy podrzędne w kolejności podanej w instrukcji zasad. Dowiedz się więcej na temat ustawiania lub edytowania zasad usługi 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 Czas w sekundach oczekiwania na zwrócenie nagłówków odpowiedzi HTTP przez usługę zaplecza przed zwróceniem błędu przekroczenia limitu czasu. Wartość minimalna to 0 sekund. Wartości większe niż 240 sekund mogą nie zostać uznane, ponieważ po tym czasie podstawowa infrastruktura sieciowa może porzucać bezczynne połączenia. Wyrażenia zasad są dozwolone. Można określić albo albo timeouttimeout-ms , ale nie oba te elementy. No 300
timeout-ms Czas w milisekundach oczekiwania na zwrócenie nagłówków odpowiedzi HTTP przez usługę zaplecza przed zwróceniem błędu przekroczenia limitu czasu. Wartość minimalna to 0 ms. Wyrażenia zasad są dozwolone. Można określić albo albo timeouttimeout-ms , ale nie oba te elementy. No N/A
continue-timeout Czas w sekundach oczekiwania na 100 Continue zwrócenie kodu stanu przez usługę zaplecza przed zwróceniem błędu przekroczenia limitu czasu. Wyrażenia zasad są dozwolone. No N/A
http-version Wersja protokołu HTTP używana podczas wysyłania żądania HTTP do usługi zaplecza:
- 1: HTTP/1
- 2: HTTP/2
- 2or1: Brama faworyzuje protokół HTTP/2 za pośrednictwem protokołu HTTP/1, ale wraca do protokołu HTTP/1, jeśli protokół HTTP/2 nie działa.

Ruch wychodzący HTTP/2 jest obsługiwany w wybranych bramach. Aby uzyskać szczegółowe informacje, zobacz Informacje o użyciu .
No 1
follow-redirects Określa, czy następuje przekierowania z usługi zaplecza, czy brama jest zwracana do obiektu wywołującego. Wyrażenia zasad są dozwolone. No false
buffer-request-body Po ustawieniu truewartości żądanie jest buforowane i będzie ponownie używane podczas ponawiania próby. No false
buffer-response Wpływa na przetwarzanie fragmentowanych odpowiedzi. Po ustawieniu falsewartości na element każdy fragment otrzymany z zaplecza jest natychmiast zwracany do obiektu wywołującego. Po ustawieniu truewartości na element fragmenty są buforowane (8 KB, chyba że zostanie wykryty koniec strumienia), a dopiero potem zostaną zwrócone do obiektu wywołującego.

Ustaw wartość na false z zapleczemi, takimi jak te implementujące zdarzenia wysyłane przez serwer (SSE), które wymagają zwrócenia lub natychmiastowego przesyłania strumieniowego zawartości do wywołującego. Wyrażenia zasad nie są dozwolone.
No true
fail-on-error-status-code Po ustawieniu wartości truena wartość wyzwala sekcję "błąd " dla kodów odpowiedzi z zakresu od 400 do 599 włącznie. Wyrażenia zasad nie są dozwolone. No false

Usage

Usage notes

  • Użyj atrybutu http-version , aby włączyć wychodzący protokół HTTP/2 z bramy do zaplecza. Ustaw atrybut na 2or1 lub 2. Obecnie ruch wychodzący HTTP/2 jest obsługiwany w bramie self-hosted i w wersji zapoznawczej w bramie w wersji 2.

    Important

    W bramie w wersji 2 protokół HTTP/2 jest obsługiwany przez ruch przychodzący do bramy usługi API Management i wychodzący z bramy do zaplecza, ale nie do końca. Obecnie brama w wersji 2 obniża dół przychodzącego połączenia HTTP/2 z protokołem HTTP/1 przed przekazaniem żądania do zaplecza.

Examples

Wysyłanie żądania do zaplecza HTTP/2

Następujące zasady na poziomie interfejsu API przekazują wszystkie żądania interfejsu API do usługi zaplecza HTTP/2. Na przykład użyj tych zasad, aby przekazywać żądania z własnej bramy do zaplecza usługi gRPC.

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

Przesyłanie dalej żądania z interwałem przekroczenia limitu czasu

Następujące zasady na poziomie interfejsu API przekazują wszystkie żądania interfejsu API do usługi zaplecza z interwałem limitu czasu wynoszącym 60 sekund.

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

Dziedzicz zasady z zakresu nadrzędnego

Te zasady na poziomie operacji używają base elementu do dziedziczenia zasad zaplecza z nadrzędnego zakresu poziomu interfejsu API.

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

Nie dziedzicz zasad z zakresu nadrzędnego

Te zasady na poziomie operacji jawnie przekazują wszystkie żądania do usługi zaplecza z limitem czasu 120 i nie dziedziczą zasad zaplecza na poziomie nadrzędnego interfejsu API. Jeśli usługa zaplecza odpowie kodem stanu błędu z zakresu od 400 do 599 włącznie, zostanie wyzwolona sekcja 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>

Nie przesyłaj dalej żądań do zaplecza

Te zasady na poziomie operacji nie przesyłają dalej żądań do usługi zaplecza.

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

Aby uzyskać więcej informacji na temat pracy z zasadami, zobacz: