Перенаправляющий запрос

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

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

Внимание

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

Примечание.

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

Правило политики

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

Атрибуты

Атрибут Description Обязательное поле По умолчанию.
timeout Время в секундах, в течение которого нужно ждать, пока внутренняя служба вернет заголовки ответа HTTP, прежде чем возникнет ошибка времени ожидания. Минимальное значение составляет 0 секунд. Значения, превышающие 240 секунд, могут не учитываться, так как базовая сетевая инфраструктура может удалять неактивные подключения после этого времени. Допустимы выражения политики. Можно указать любой из timeout этих вариантов или timeout-ms не оба. No 300
timeout-ms Время в миллисекундах для ожидания возврата заголовков HTTP-ответа серверной службой до возникновения ошибки времени ожидания. Минимальное значение — 0 мс. Допустимы выражения политики. Можно указать любой из timeout этих вариантов или timeout-ms не оба. No Н/П
время ожидания продолжения Время в секундах для ожидания 100 Continue возврата кода состояния серверной службой до возникновения ошибки времени ожидания. Допустимы выражения политики. No Н/П
http-version Версия спецификации HTTP, используемая при отправке HTTP-ответа в серверную службу. При использовании 2or1шлюз будет использовать протокол HTTP /2 по сравнению с /1, но возвращается к протоколу HTTP /1, если HTTP /2 не работает. No 1
последующие перенаправления Указывает, что происходит с перенаправлениями от внутренней службы: шлюз выполняет их или они возвращаются вызывающему объекту. Допустимы выражения политики. 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

Использование

Примеры

Отправка запроса на серверную часть HTTP/2

Следующая политика уровня API перенаправляет все запросы API в серверную службу HTTP/2.

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

Это необходимо для рабочих нагрузок HTTP /2 или gRPC, которые в настоящее время поддерживаются только в локальном шлюзе. Дополнительные сведения см. в обзоре шлюза API.

Переадресация запроса с интервалом времени ожидания

Следующая политика уровня 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>

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