

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在 API Gateway 中使用壓縮的承載接收 API 回應
<a name="api-gateway-receive-response-with-compressed-payload"></a>

對已啟用壓縮功能的 API 提出請求時，用戶端可以透過指定 `Accept-Encoding` 標頭與[支援的內容編碼](api-gateway-enable-compression.md#api-gateway-supported-content-encodings)，選擇接收特定格式的壓縮回應承載。

只有符合下列條件時，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
```

壓縮回應承載之後，只有壓縮的資料大小會計入數據傳輸費。