接收已壓縮承載的 API 回應 - Amazon 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

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