接收 API Gateway 中具有压缩负载的 API 响应
在启用压缩的 API 上发出请求时,客户端可以指定具有 支持内容编码 的 Accept-Encoding
标头,选择接收特定格式的压缩响应负载。
API Gateway 仅在满足以下条件时压缩响应负载:
-
传入请求具有
Accept-Encoding
标头和支持的内容编码及格式。注意
如果未设置标头,默认值为
*
(在 RFC 7231中定义)。在这种情况下,API Gateway 不会压缩有效负载。某些浏览器或客户端可能会为启用了压缩的请求自动添加 Accept-Encoding
(例如Accept-Encoding:gzip, deflate, br
)。这会在 API Gateway 中启用负载压缩。如果没有对支持的Accept-Encoding
标头值的明确规范,API Gateway 不会压缩负载。 -
在 API 上设置了
minimumCompressionSize
以启用压缩。 -
集成响应没有
Content-Encoding
标头。 -
集成响应负载的大小,在应用了适用的映射模板之后,大于或等于指定的
minimumCompressionSize
值。
API Gateway 在压缩负载之前,应用为集成响应配置的任意映射模板。如果集成响应包含 Content-Encoding
标头,API Gateway 假设集成响应负载已经压缩并跳过压缩处理。
以 PetStore API 示例及以下请求为例:
GET /pets Host: {petstore-api-id}.execute-api.{region}.amazonaws.com Accept: application/json
后端对具有未压缩 JSON 负载的请求的响应类似于以下内容:
200 OK [ { "id": 1, "type": "dog", "price": 249.99 }, { "id": 2, "type": "cat", "price": 124.99 }, { "id": 3, "type": "fish", "price": 0.99 } ]
要将此输出作为压缩负载接收,您的 API 客户端可以按以下所示提交请求:
GET /pets Host: {petstore-api-id}.execute-api.{region}.amazonaws.com Accept-Encoding:gzip
客户端接收具有 Content-Encoding
标头和 GZIP 编码负载的响应,类似于以下内容:
200 OK Content-Encoding:gzip ... ���RP� J�)JV �:P^IeA*������+(�L �X�YZ�ku0L0B7!9��C#�&����Y��a���^�X
在压缩响应负载之后,只收取压缩后数据大小的数据传输费用。