Solicitud de reenvío
SE APLICA A: todos los niveles de API Management
La directiva forward-request
reenvía la solicitud entrante al servicio back-end especificado en el forward-request
de la solicitud. La dirección URL del servicio back-end se especifica en la configuración de la API y se puede cambiar mediante la directiva de establecimiento del servicio back-end.
Importante
- Esta directiva es necesaria para reenviar solicitudes a un back-end de API. De forma predeterminada, API Management configura esta directiva de forma global.
- Si quita los resultados de esta directiva en la solicitud, no se reenviarán al servicio back-end. Por lo tanto, las directivas de la sección de salida se evaluarán inmediatamente tras la finalización correcta de las directivas en la sección de entrada.
Nota:
Establezca los elementos de la directiva y los elementos secundarios en el orden proporcionado en la instrucción de directiva. Obtenga más información sobre el establecimiento o modificación de directivas de API Management.
Instrucción de la directiva
<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"/>
Atributos
Atributo | Descripción | Necesario | Valor predeterminado |
---|---|---|---|
timeout | La cantidad de tiempo en segundos de espera a que el servicio back-en devuelva los encabezados de respuesta HTTP antes de que se genere un error de tiempo de expiración. El valor mínimo es 0segundos. Puede que los valores que superen los 240 segundos no se respeten, ya que la infraestructura de red subyacente puede eliminar las conexiones inactivas después de este tiempo. Se permiten expresiones de directiva. Puede especificar timeout o timeout-ms , pero no ambos. |
No | 300 |
timeout-ms | La cantidad de tiempo en milisegundos de espera a que el servicio back-en devuelva los encabezados de respuesta HTTP antes de que se genere un error de tiempo de expiración. El valor mínimo es 0 ms. Se permiten expresiones de directiva. Puede especificar timeout o timeout-ms , pero no ambos. |
No | N/D |
continue-timeout | La cantidad de tiempo en segundos de espera a que el código de estado de 100 Continue devuelva los encabezados de respuesta HTTP antes de que se genere un error de tiempo de expiración. Se permiten expresiones de directiva. |
No | N/D |
http-version | La versión de especificación de HTTP que se usa al enviar la respuesta HTTP al servicio back-end. Al usar 2or1 , la puerta de enlace favorecerá HTTP /2 frente a /1, pero revertirá a HTTP /1 si HTTP /2 no funciona. |
No | 1 |
follow-redirects | Especifica si la puerta de enlace sigue los redireccionamientos desde el servicio back-end o si estos se devuelven al autor de la llamada. Se permiten expresiones de directiva. | No | false |
buffer-request-body | Cuando se establece en true , la solicitud se almacena en el búfer y se volverá a usar si se realiza algún reintento. |
No | false |
buffer-response | Afecta al procesamiento de respuestas fragmentadas. Cuando se establece en false , cada fragmento recibido del back-end se devuelve inmediatamente al autor de la llamada. Cuando se establece en true , los fragmentos se almacenan en búfer (8 KB, a menos que se detecte el final de la secuencia) y solo entonces se devuelven al autor de la llamada.Se establece en false con servidores back-end como los que implementan eventos enviados por el servidor (SSE) que requieren que se devuelva contenido o se transmita inmediatamente al autor de la llamada. No se permiten expresiones de directiva. |
No | true |
fail-on-error-status-code | Cuando se establece en true , se desencadena la sección on-error para los códigos de respuesta incluidos en el intervalo de 400 a 599 (ambos incluidos). No se permiten expresiones de directiva. |
No | false |
Uso
- Secciones de la directiva: back-end
- Ámbitos de la directiva: global, área de trabajo, producto, API, operación
- Puertas de enlace: clásica, v2, consumo, autohospedada y área de trabajo
Ejemplos
Envío de una solicitud al back-end HTTP/2
La siguiente directiva de nivel de API reenvía todas las solicitudes de API a un servicio back-end HTTP/2.
<!-- api level -->
<policies>
<inbound>
<base/>
</inbound>
<backend>
<forward-request http-version="2or1"/>
</backend>
<outbound>
<base/>
</outbound>
</policies>
Esto es necesario para las cargas de trabajo HTTP /2 o gRPC y actualmente solo se admite en la puerta de enlace autohospedada. Obtenga más información en nuestra información general de la puerta de enlace de API.
Reenviar la solicitud con intervalo de tiempo de espera
La siguiente directiva de nivel de API reenvía todas las solicitudes de API al servicio back-end con un intervalo de tiempo de expiración de 60 segundos.
<!-- api level -->
<policies>
<inbound>
<base/>
</inbound>
<backend>
<forward-request timeout="60"/>
</backend>
<outbound>
<base/>
</outbound>
</policies>
Heredar la directiva del ámbito primario
Esta directiva de nivel de operación utiliza el elemento base
para heredar la directiva de back-end del ámbito de nivel de API principal.
<!-- operation level -->
<policies>
<inbound>
<base/>
</inbound>
<backend>
<base/>
</backend>
<outbound>
<base/>
</outbound>
</policies>
No heredar la directiva del ámbito primario
Esta directiva de nivel de operación reenvía explícitamente todas las solicitudes al servicio back-end con un tiempo de espera de 120 y no hereda la directiva de back-end de nivel de API principal. Si el servicio de back-end responde con un código de estado de error de 400 a 599 (ambos incluidos), se desencadenará la sección 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>
No reenviar solicitudes al back-end
Esta directiva de nivel de operación no reenvía solicitudes al servicio back-end.
<!-- operation level -->
<policies>
<inbound>
<base/>
</inbound>
<backend>
<!-- no forwarding to backend -->
</backend>
<outbound>
<base/>
</outbound>
</policies>
Directivas relacionadas
Contenido relacionado
Para más información sobre el trabajo con directivas, vea:
- Tutorial: Transformación y protección de una API
- Referencia de directivas para una lista completa de instrucciones de directivas y su configuración
- Expresiones de directiva
- Establecimiento o edición de directivas
- Reutilización de configuraciones de directivas
- Repositorio de fragmentos de código de directiva
- Creación de directivas mediante Microsoft Copilot en Azure