Поделиться через


Forward request

ОБЛАСТЬ ПРИМЕНЕНИЯ: все уровни Управление API

Политика forward-request перенаправляет входящий запрос во внутреннюю службу, указанную в контексте запроса. URL-адрес внутренней службы, заданный в параметрах API, может быть изменен с помощью политики задания внутренней службы.

Important

  • Эта политика необходима для пересылки запросов в серверную часть API. По умолчанию Управление API настраивает эту политику в глобальной области.
  • Удаление этой политики приводит к тому, что запрос не перенаправляется в серверную службу. Политики в исходящем разделе оцениваются сразу после успешного выполнения политики во входящем разделе.

Note

Задайте элементы политики и дочерние элементы в порядке, указанном в правиле политики. Узнайте, как устанавливать или изменять политики службы управления API.

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/2 по протоколу HTTP/1, но возвращается к протоколу HTTP/1, если HTTP/2 не работает.

Исходящий трафик HTTP/2 поддерживается в выборах шлюзов. Дополнительные сведения см. в заметках об использовании .
No 1
follow-redirects Указывает, что происходит с перенаправлениями от внутренней службы: шлюз выполняет их или они возвращаются вызывающему объекту. Допустимы выражения политики. No false
buffer-request-body Если задано значение true, запрос буферизуется и будет повторно использоваться при повторных попытках. No false
buffer-response Влияет на обработку фрагментированных откликов. Если задано значение false, каждый блок, полученный от серверной части, немедленно возвращается вызывающей стороне. Если задано значение true, блоки буферизовываются (8 КБ, если не обнаружен конец потока), а затем возвращаются вызывающему объекту.

Установите значение false с внутренними серверными службами, например с реализацией событий, отправленных сервером (SSE), которые требуют возврата или передачи содержимого немедленно вызывающей стороне. Выражения политики не допускаются.
No true
fail-on-error-status-code Если задано значение true, триггеры в разделе об ошибке для кодов ответов в диапазоне от 400 до 599 включительно. Выражения политики не допускаются. No false

Usage

Usage notes

  • http-version Используйте атрибут, чтобы включить исходящий трафик протокола HTTP/2 из шлюза в серверную часть. Задайте для 2or1 атрибута или 2. В настоящее время исходящий трафик HTTP/2 поддерживается в локальном шлюзе и в предварительной версии шлюза версии 2.

    Important

    В шлюзе версии 2 http/2 поддерживается входящий трафик в шлюз управления API и исходящий трафик из шлюза в серверную часть, но не сквозной. В настоящее время шлюз версии 2 перенаправляет входящие подключения 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>

Дополнительные сведения о работе с политиками см. в нижеуказанных статьях.