Solicitudes y respuestas de transmisión

Estás consultando la documentación de Apigee Edge.
Consulta la documentación de Apigee X.
Información

Lo que aprenderás en este tema

Después de leer este tema, sabrás lo siguiente:

  • Qué es la transmisión de solicitudes y respuestas en Apigee Edge
  • Cuándo usar la transmisión de solicitudes y respuestas
  • Cómo habilitar la transmisión de solicitudes y respuestas

¿Qué es la transmisión de solicitudes y respuestas?

De forma predeterminada, la transmisión HTTP está inhabilitada y las cargas útiles de solicitud y respuesta HTTP se escriben en un búfer de memoria antes de que la canalización del proxy de API las procese. Para cambiar este comportamiento, habilita la transmisión. Con la transmisión habilitada, las cargas útiles de solicitud y respuesta se transmiten sin modificación a la app cliente (para las respuestas) y al extremo de destino (para las solicitudes).

¿Cuándo debo habilitar la transmisión?

Si tu proxy de API maneja solicitudes o respuestas muy grandes (para conocer los límites de tamaño, consulta ¿Qué más debo saber acerca de la transmisión? a continuación), te recomendamos habilitar la transmisión.

¿Qué más debo saber sobre la transmisión?

El tamaño de la carga útil del mensaje está restringido a 10 MB en Edge Cloud y en la nube privada, incluso con la transmisión habilitada. En las solicitudes y respuestas no transmitidas, si superas ese tamaño, se produce un error protocol.http.TooBigBody.

En Edge para implementaciones de nube privada, puedes modificar el límite de tamaño de solicitudes o respuestas que no se transmiten. Asegúrate de realizar pruebas antes de implementar el cambio en producción.

  • Para las versiones de Edge para nube privada anteriores a 4.16.01:

    En todos los procesadores de mensajes, edita el archivo http.properties para aumentar el límite en el parámetro HTTPResponse.body.buffer.limit y, luego, reinicia el procesador de mensajes.
  • Para la versión 4.16.01 y posteriores de Edge para la nube privada, sigue estos pasos:
    1. Edita el archivo /<inst_root>/apigee/customer/application/message-processor.properties. Si ese archivo no existe, créalo.

    2. Configura la propiedad conf_http_HTTPResponse.body.buffer.limit en message-processor.properties. Por ejemplo:
      conf_http_HTTPResponse.body.buffer.limit=5m

    3. Reinicia el procesador de mensajes:
      > /<inst_root>/apigee/apigee-service/bin/apigee-service Edge-message-processor reiniciar

    4. Repite el procedimiento para todos los procesadores de mensajes.

Cómo habilitar la transmisión de solicitudes y respuestas

Para habilitar la transmisión de solicitudes, debes agregar la propiedad request.streaming.enabled a las definiciones de ProxyEndpoint y TargetEndpoint en el paquete del proxy y establecerla como true. Del mismo modo, configura la propiedad response.streaming.enabled para habilitar la transmisión de respuestas.

Puedes encontrar estos archivos de configuración en la IU de administración en la vista de desarrollo de tu proxy. Si desarrollas de manera local, estos archivos de definición están en apiproxy/proxies y apiproxy/targets.

En esta muestra, se indica cómo habilitar la transmisión de solicitudes y respuestas en la definición de TargetEndpoint.

<TargetEndpoint name="default">
  <HTTPTargetConnection>
    <URL>http://mocktarget.apigee.net</URL>
    <Properties>
      <Property name="response.streaming.enabled">true</Property>
      <Property name="request.streaming.enabled">true</Property>
      <Property name="supports.http10">true</Property>
      <Property name="request.retain.headers">User-Agent,Referer,Accept-Language</Property>
      <Property name="retain.queryparams">apikey</Property>
    </Properties>
  </HTTPTargetConnection>
</TargetEndpoint>

En este ejemplo, se muestra cómo habilitar la transmisión de solicitudes y respuestas en la definición de ProxyEndpoint:

<ProxyEndpoint name="default">
  <HTTPProxyConnection>
    <BasePath>/v1/weather</BasePath>
    <Properties>
      <Property name="allow.http10">true</Property>
      <Property name="response.streaming.enabled">true</Property>
      <Property name="request.streaming.enabled">true</Property>
    </Properties>
  </HTTPProxyConnection>
</ProxyEndpoint>

Para obtener más información sobre cómo configurar las definiciones de extremos, consulta Referencia de propiedades de extremos.

Muestras de código relacionadas

Las muestras de proxy de API en GitHub son fáciles de descargar y usar. Consulta Usa los proxies de API de muestra para obtener información sobre cómo descargar y usar las muestras.

Entre los proxies de muestra que incluyen la transmisión, se incluyen los siguientes:

  • streaming: Muestra un proxy de API configurado para la transmisión HTTP.
  • Edge Prompt: Signed URL Generator: Muestra la práctica recomendada para generar una URL firmada a fin de acceder a archivos grandes en lugar de transmitirlos en una solicitud o respuesta.