Amazon API Gateway
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

接收具有压缩负载的 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

在压缩响应负载之后,只收取压缩后数据大小的数据传输费用。