

# 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 はペイロードを圧縮しません。
+  `minimumCompressionSize` は、圧縮を有効にするために API で設定されています。
+  統合レスポンスには `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
```

レスポンスのペイロードが圧縮されると、圧縮されたデータサイズのみがデータ転送に対して課金されます。