

# 接收 API Gateway 中具有压缩负载的 API 响应
<a name="api-gateway-receive-response-with-compressed-payload"></a>

在启用压缩的 API 上发出请求时，客户端可以指定具有 [支持内容编码](api-gateway-enable-compression.md#api-gateway-supported-content-encodings) 的 `Accept-Encoding` 标头，选择接收特定格式的压缩响应负载。

API Gateway 仅在满足以下条件时压缩响应负载：
+  传入请求具有 `Accept-Encoding` 标头和支持的内容编码及格式。
**注意**  
如果未设置标头，默认值为 `*`（在 [RFC 7231](https://datatracker.ietf.org/doc/html/rfc7231#section-5.3.4) 中定义）。在这种情况下，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
```

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