Empfangen einer API-Antwort mit einer komprimierten Nutzlast
Beim Erstellen einer Anforderung in einer komprimierungsfähigen API kann der Client festlegen, dass er eine komprimierte Antwortnutzlast eines bestimmten Formats erhält, indem er einen Accept-Encoding
-Header mit einer unterstützten Inhaltscodierung angibt.
API Gateway komprimiert den Antwortpayload nur, wenn die folgenden Bedingungen erfüllt sind:
-
Der
Accept-Encoding
-Header der eingehenden Anforderung weist eine unterstützte Inhaltscodierung und ein entsprechendes Format auf.Anmerkung Wenn der Header nicht festgelegt ist, ist der Standardwert
*
gemäß RFC 7231. In einem solchen Fall komprimiert API Gateway den Payload nicht. Einige Browser oder Clients fügen komprimierungsfähigen Anforderungen möglicherweise automatisch Accept-Encoding
(z. B.Accept-Encoding:gzip, deflate, br
) hinzu. Dies kann die Komprimierung des Payloads in API Gateway auslösen. Ohne explizite Angabe der unterstütztenAccept-Encoding
-Header-Werte komprimiert API Gateway den Payload nicht. -
Die
minimumCompressionSize
wird in der API festgelegt, um die Komprimierung zu aktivieren. -
Die Integrationsantwort enthält keinen
Content-Encoding
-Header. -
Die Größe einer Integrationsantwortnutzlast nach Anwendung der geltenden Zuweisungsvorlage ist größer als oder gleich dem angegebenen
minimumCompressionSize
-Wert.
API Gateway wendet ggf. eine Zuweisungsvorlagen an, die für die Integrationsantwort konfiguriert ist, bevor die Nutzlast komprimiert wird. Wenn die Integrationsantwort einen Content-Encoding
-Header enthält, geht API Gateway davon aus, dass die Integrationsantwortnutzlast bereits komprimiert ist und überspringt die Komprimierungsverarbeitung.
Ein Beispiel ist die PetStore-API mit der folgenden Anforderung:
GET /pets Host: {petstore-api-id}.execute-api.{region}.amazonaws.com Accept: application/json
Das Backend beantwortet die Anforderung mit einer nicht komprimierten JSON-Nutzlast ähnlich wie der folgenden:
200 OK [ { "id": 1, "type": "dog", "price": 249.99 }, { "id": 2, "type": "cat", "price": 124.99 }, { "id": 3, "type": "fish", "price": 0.99 } ]
Zum Empfangen dieser Ausgabe als komprimierte Nutzlast kann Ihr API-Client eine Anforderung wie folgt senden:
GET /pets Host: {petstore-api-id}.execute-api.{region}.amazonaws.com Accept-Encoding:gzip
Der Client erhält die Antwort mit einem Content-Encoding
-Header und einer GZIP-kodierten Nutzlast ähnlich wie den folgenden:
200 OK Content-Encoding:gzip ... ���RP� J�)JV �:P^IeA*������+(�L �X�YZ�ku0L0B7!9��C#�&����Y��a���^�X
Wird die Antwortnutzlast komprimiert, wird nur die komprimierte Datengröße für die Datenübertragung in Rechnung gestellt.