在API閘道中接收含有壓縮負載的API回應 - Amazon API 网关

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

在API閘道中接收含有壓縮負載的API回應

在啟用壓縮功能上提出要求時API,用戶端可以透過指定具有支援內容編碼的Accept-Encoding標頭來選擇接收特定格式的壓縮回應承載。

API閘道只會在滿足下列條件時壓縮回應承載:

  • 傳入請求具有 Accept-Encoding 標頭以及支援的內容編碼與格式。

    注意

    如果未設定標頭,則預設值與 RFC7231*的定義相同。在這種情況下,API閘道不會壓縮裝載。某些瀏覽器或用戶端可能會自動將 Accept-Encoding (例如 Accept-Encoding:gzip, deflate, br) 新增至已啟用壓縮功能的請求。這可以在API閘道中開啟裝載壓縮。如果沒有明確指定支援的Accept-Encoding標頭值,APIGateway 就不會壓縮承載。

  • 在上minimumCompressionSize設定API以啟用壓縮。

  • 整合回應沒有 Content-Encoding 標頭。

  • 整合回應承載的大小在套用適用的映射範本之後,大於或等於指定的 minimumCompressionSize 值。

API在壓縮承載之前,閘道會套用為整合回應設定的任何對應範本。如果整合回應包含Content-Encoding標頭,APIGateway 會假設整合回應承載已經壓縮,並略過壓縮處理。

一個例子是示 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

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