Compartilhar via


Forward request

APLICA-SE A: todas as camadas do Gerenciamento de API

A política forward-request encaminha a solicitação de entrada para o serviço de back-end especificado na variável de forward-request de solicitação. A URL do serviço de back-end é especificada nas configurações de API e pode ser alterada usando a política definir o serviço de back-end.

Important

  • Essa política é necessária para encaminhar solicitações a um back-end de API. Por padrão, o Gerenciamento de API configura essa política no escopo global.
  • A remoção dessa política faz com que a solicitação não seja encaminhada ao serviço de back-end. As políticas na seção de saída são avaliadas imediatamente mediante a conclusão bem-sucedida das políticas na seção de entrada.

Note

Defina os elementos da política e os elementos filho na ordem fornecida na declaração da política. Saiba mais sobre como definir e editar as políticas de Gerenciamento de 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 A quantidade de tempo em segundos a aguardar que os cabeçalhos de resposta HTTP sejam retornados pelo serviço de back-end antes que um erro de tempo esgotado seja gerado. O valor mínimo é 0 segundos. Valores maiores que 240 segundos podem não ser respeitados, porque a infraestrutura de rede subjacente pode descartar conexões ociosas após esse tempo. Expressões de política são permitidas. Você pode especificar timeout ou timeout-ms, mas não ambos. No 300
timeout-ms A quantidade de tempo em milissegundos a aguardar que os cabeçalhos de resposta HTTP sejam retornados pelo serviço de back-end antes que um erro de tempo esgotado seja gerado. O valor mínimo é 0 ms. Expressões de política são permitidas. Você pode especificar timeout ou timeout-ms, mas não ambos. No N/A
continue-timeout O tempo total, em segundos, para aguardar que um código de status 100 Continue seja retornado pelo serviço de back-end antes que um erro de tempo limite seja gerado. Expressões de política são permitidas. No N/A
http-version A versão do protocolo HTTP a ser usada ao enviar a solicitação HTTP para o serviço de back-end:
- 1: HTTP/1
- 2: HTTP/2
- 2or1: o gateway favorece HTTP/2 em http/1, mas volta para HTTP/1 se HTTP/2 não funcionar.

Há suporte para saída HTTP/2 em gateways selecionados. Consulte as notas de uso para obter detalhes.
No 1
follow-redirects Especifica se os redirecionamentos do serviço de back-end são seguidos pelo gateway ou retornados ao chamador. Expressões de política são permitidas. No false
buffer-request-body Quando definido como true, a solicitação é armazenada em buffer e será reutilizada na nova tentativa. No false
buffer-response Afeta o processamento de respostas em partes. Quando definido como false, cada parte recebida do back-end é retornada imediatamente para o autor da chamada. Quando definias como true, as partes são armazenadas em buffer (8 KB, a menos que o final do fluxo seja detectado) e, em seguida, retornadas para o chamador.

Defina essa opção como false com back-ends como aqueles que implementam SSE (eventos enviados pelo servidor) que exigem que o conteúdo seja retornado ou transmitido imediatamente para o chamador. Expressões de política não são permitidas.
No true
fail-on-error-status-code Quando definido como true aciona a seção On-Error para códigos de resposta no intervalo de 400 a 599, inclusive. Expressões de política não são permitidas. No false

Usage

Usage notes

  • Use o http-version atributo para habilitar a saída do protocolo HTTP/2 do gateway para o back-end. Defina o atributo como 2or1 ou 2. Atualmente, há suporte para saída HTTP/2 no gateway auto-hospedado e em versão prévia no gateway v2.

    Important

    No gateway v2, há suporte para HTTP/2 de entrada para o gateway de Gerenciamento de API e saída do gateway para o back-end, mas não de ponta a ponta. Atualmente, o gateway v2 faz downgrade de uma conexão HTTP/2 de entrada para HTTP/1 antes de encaminhar a solicitação para o back-end.

Examples

Enviar solicitação para o back-end HTTP/2

A política de nível da API a seguir encaminha todas as solicitações de API para um serviço de back-end HTTP/2. Por exemplo, use essa política para encaminhar solicitações de um gateway auto-hospedado para um back-end gRPC.

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

Encaminhar solicitação com intervalo de tempo limite

A política de nível de API a seguir encaminha todas as solicitações de API para o serviço de back-end com um intervalo de tempo limite de 60 segundos.

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

Herdar a política do escopo pai

Esta política de nível de operação usa o elemento base para herdar a política de back-end do escopo de nível de API pai.

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

Não herdar a política do escopo pai

Essa política de nível de operação explicitamente encaminha todas as solicitações para o serviço de back-end com um tempo limite de 120 e não herda a política de back-end do nível da API pai. Se o serviço de back-end responder com um código de status de erro de 400 para 599, inclusive, a seção On-Error será acionada.

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

Não encaminhar solicitações para o back-end

Essa política de nível de operação não encaminha solicitações para o serviço de back-end.

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

Para obter mais informações sobre como trabalhar com políticas, consulte: