截至2016年11月,我明白API网关现在支持二进制媒体类型。是否有可能从一个lambda代理返回压缩的HTTP?AWS API网关压缩响应
我有一个快速js应用程序需要返回压缩输出(从数据库查询),否则响应正文超过lambda响应正文限制。
谢谢!
截至2016年11月,我明白API网关现在支持二进制媒体类型。是否有可能从一个lambda代理返回压缩的HTTP?AWS API网关压缩响应
我有一个快速js应用程序需要返回压缩输出(从数据库查询),否则响应正文超过lambda响应正文限制。
谢谢!
您可以将base64编码的字符串中的压缩数据从Lambda返回到API网关。
然后,您可以在返回到客户端之前使用二进制媒体类型功能将base64编码的字符串转换回二进制数据。
如果您希望强制API网关返回二进制数据而不是尊重accept头,则可以通过CLI将集成响应中的contentHandling属性设置为CONVENT_TO_BINARY。
aws apigateway update-integration-response \
--rest-api-id <api-id> \
--resource-id <resource-id> \
--http-method GET \
--status-code 200 \
--patch-operations '[{"op" : "replace", "path" : "/contentHandling", "value" : "CONVERT_TO_BINARY"}]'
谢谢。因此,如果我有一个我使用gzip(content-type:application/json,content-encoding:gzip)的json字符串,并将其作为base64编码的字符串发送,则API Gateway将能够将此转换回二进制文件并传递给它我的客户? – galacticpresident
API网关不会解压缩您的数据并将其传递给您的客户端。您的客户需要知道如何处理gzip数据。 –
谢谢!我不得不破解在客户端解码/ ungzip的方式,但这工作。 – galacticpresident
不幸的是,API网关目前不支持HTTP压缩。但是,这是考虑到未来的发展。并且不支持将来自Lambda的二进制输出传递给API网关。 –