流式传输请求和响应

本页面适用于 ApigeeApigee Hybrid

查看 Apigee Edge 文档。

本主题将学习的内容

阅读本主题后,您将了解以下内容:

  • Apigee 中的请求和响应流式传输是什么
  • 何时使用请求和响应流式传输
  • 如何启用请求和响应流式传输

请求和响应流式传输是什么?

默认情况下,HTTP 流式传输处于停用状态,HTTP 请求和响应载荷会写入内存中的缓冲区,随后由 API 代理流水线进行处理。您可以通过启用流式传输来更改此行为。启用流式传输后,系统将流式传输请求和响应载荷,而无需修改客户端应用(对于响应)和目标端点(对于请求)。

何时应启用流式传输?

如果您的 API 代理处理非常大的请求和/或响应(如需了解大小限制,请参阅我还需要了解流式传输的其他哪些内容?),您可能需要启用流式处理。

我还需要了解流式传输的其他哪些内容?

消息载荷大小上限为 10 MB。在非流式传输的请求和响应中,超过该大小会导致 protocol.http.TooBigBody 错误。

已编码的数据

启用流式传输后,Apigee 不会对请求或响应载荷进行编码或解码,然后再将其发送至连接到 Apigee 的客户端或后端目标服务器。如需了解详情,请参阅 TargetEndpoint 传输属性规范表中的 request.streaming.enabledresponse.streaming.enabled 所对应的行。

如何启用请求和响应流式传输

如需启用请求流式传输,您需要将 request.streaming.enabled 属性添加到代理软件包中的 ProxyEndpoint 和 TargetEndpoint 定义,并将其设置为 true。同样,设置 response.streaming.enabled 属性以启用响应流式传输。

您可以在代理的“开发”视图中的 Apigee 界面中找到这些配置文件。如果您是在本地开发,则这些定义文件位于 apiproxy/proxiesapiproxy/targets 中。

以下示例展示了如何在 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>

以下示例展示了如何在 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>

如需详细了解如何配置端点定义,请参阅端点属性参考

相关代码示例

GitHub 上的 API 代理示例易于下载和使用。

具备流式传输功能的示例代理包括: