Solicitudes y respuestas de streaming

Esta página se aplica a Apigee y Apigee Hybrid.

Consulta la documentación de Apigee Edge.

Qué aprenderás en este tema

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

  • Qué es el streaming de solicitudes y respuestas en Apigee
  • Cuándo usar el streaming de solicitudes y respuestas
  • Cómo habilitar el streaming de solicitudes y respuestas

¿Qué es el streaming de solicitudes y respuestas?

De forma predeterminada, el streaming HTTP está inhabilitado y las cargas útiles de las solicitudes y respuestas HTTP se escriben en un búfer en la memoria antes de que las procese la canalización del proxy de API. Puedes cambiar este comportamiento habilitando la transmisión. Si el streaming está habilitado, las cargas útiles de las solicitudes y las respuestas se transmiten sin modificar a la aplicación cliente (en el caso de las respuestas) y al endpoint de destino (en el caso de las solicitudes).

¿Cuándo debo habilitar la emisión?

Si tu proxy de API gestiona solicitudes o respuestas muy grandes (para ver los límites de tamaño, consulta ¿Qué más debo saber sobre el streaming?), puede que te interese habilitar el streaming.

¿Qué más debo saber sobre el streaming?

El tamaño de la carga útil del mensaje está limitado a 30 MB. En las solicitudes y respuestas no transmitidas, si se supera ese tamaño, se produce un error protocol.http.TooBigBody.

Datos codificados

Cuando el streaming está habilitado, Apigee no codifica ni decodifica las cargas útiles de las solicitudes o respuestas antes de enviarlas al cliente que se conecta a Apigee o a un servidor de destino backend. Para obtener más información, consulta las filas de request.streaming.enabled y response.streaming.enabled en la tabla Especificación de la propiedad de transporte TargetEndpoint.

Cómo habilitar el streaming de solicitudes y respuestas

Para habilitar el streaming de solicitudes, debe añadir la propiedad request.streaming.enabled a las definiciones de ProxyEndpoint y TargetEndpoint del paquete de proxy y asignarle el valor true. Del mismo modo, asigna el valor response.streaming.enabled a la propiedad para habilitar la transmisión de respuestas.

Puedes encontrar estos archivos de configuración en la interfaz de usuario de Apigee, en la vista Desarrollo de tu proxy. Si desarrollas de forma local, estos archivos de definición se encuentran en apiproxy/proxies y apiproxy/targets.

En este ejemplo se muestra cómo habilitar el streaming 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 el streaming de respuestas y solicitudes 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 endpoints, consulta la referencia de propiedades de endpoints.

Ejemplos de código relacionado

Los ejemplos de proxy de API de GitHub son fáciles de descargar y usar.

Estos son algunos ejemplos de proxies que ofrecen streaming:

  • streaming: muestra un proxy de API configurado para el streaming HTTP.
  • Nota: Generador de URLs firmadas: ilustra la práctica recomendada de generar una URL firmada para acceder a archivos grandes en lugar de intentar transmitirlos en una solicitud o respuesta.