使用GraphOS路由器和API网关启用HTTP订阅
在路由器前使用API网关时启用HTTP多部分订阅
了解如何配置API网关以支持HTTP多部分。订阅 使用GraphOS路由器。
组织可能需要他们的API(包括路由器——)通过API网关访问。API网关通常未配置为支持通过HTTP多部分进行的订阅:API网关默认通常会缓冲HTTP响应,但订阅需要在HTTP多部分中流式传输,而不能缓冲。
本文的其余部分描述了如何配置不同供应商的API网关以流式传输而不是缓冲HTTP响应,从而支持订阅在HTTP多部分中。
Azure API管理(APIM)
默认情况下,APIM中的HTTP API端点缓冲来自下游服务的每个响应,端点必须接收到HTTP响应的所有片段才能将响应发送给客户端。
要启用HTTP 订阅,需要更新forward-request
策略的backend
部分,增加buffer-response="false"
。此配置使得HTTP API端点在接收到响应片段时立即将其发送给请求客户端。
<policies><backend><forward-request http-version="2or1" buffer-response="false" /></backend></policies>
ⓘ 注意
有关更多信息,请参阅 Azure API Management策略参考 - 转发请求。
Google Apigee
默认情况下,Apigee中的HTTP API端点将对下游服务的每个响应进行缓冲,端点必须接收到HTTP响应的所有块后才能将响应发送到客户端。
要启用HTTP订阅,必须在代理包中的ProxyEndpoint
和TargetEndpoint
定义中设置response.streaming.enabled
属性为true
。这将配置HTTP API端点在接收到响应块时将其发送给请求客户端。
<TargetEndpoint name="default"><HTTPTargetConnection><URL>http://mocktarget.apigee.net</URL><Properties><Property name="response.streaming.enabled">true</Property></Properties></HTTPTargetConnection></TargetEndpoint>
<ProxyEndpoint name="default"><HTTPProxyConnection><BasePath>/v1/weather</BasePath><Properties><Property name="response.streaming.enabled">true</Property></Properties></HTTPProxyConnection></ProxyEndpoint>
ⓘ 注意
有关更多信息,请参阅Apigee文档中的流式请求和响应。
Mulesoft
Flex Gateway
无需额外配置即可支持HTTP分块的流式传输。
代理 (Mule 4, CloudHub 2.0)
不支持HTTP分块的流式传输。请使用Flex Gateway。
Kong
无需额外配置即可支持HTTP分块的流式传输。
AWS API Gateway
AWS API Gateway不支持HTTP数据的流式传输。
一种可能的解决方案是使用支持流式传输的Lambda表达式。有关更多信息,请参阅AWS Lambda响应流式传输。