Recepción de una respuesta de API con una carga comprimida en API Gateway
Cuando realiza una solicitud en una API habilitada para la compresión, el cliente puede optar por recibir una carga de respuesta comprimida de un formato específico especificando un encabezado Accept-Encoding
con una codificación de contenido compatible.
API Gateway solo comprime la carga de respuesta cuando se cumplen las siguientes condiciones:
-
La solicitud entrante tiene el encabezado
Accept-Encoding
con el formato y la codificación de contenido compatibles.nota
Si no se define el encabezado, el valor predeterminado es
*
tal y como se define en RFC 7231. En tal caso, API Gateway no comprime la carga útil. Algunos navegadores o clientes pueden añadir Accept-Encoding
(por ejemploAccept-Encoding:gzip, deflate, br
) automáticamente para las solicitudes habilitadas para compresión. Esto puede activar la compresión de la carga útil en API Gateway. Sin una especificación explícita de los valores del encabezadoAccept-Encoding
admitidos, API Gateway no comprime la carga. -
minimumCompressionSize
está establecido en la API para habilitar la compresión. -
La respuesta de integración no tiene un encabezado
Content-Encoding
. -
El tamaño de la carga de respuesta de integración, una vez que se aplica la plantilla de asignación correspondiente, es mayor o igual que el valor
minimumCompressionSize
especificado.
API Gateway aplica una plantilla de asignación configurada para la respuesta de integración antes de que se comprima la carga. Si la respuesta de integración contiene un encabezado Content-Encoding
, API Gateway presupone que la carga de respuesta de integración ya está comprimida y omite el proceso de compresión.
Un ejemplo de esto es el de la API de PetStore y la siguiente solicitud:
GET /pets Host: {petstore-api-id}.execute-api.{region}.amazonaws.com Accept: application/json
El backend responde a la solicitud con una carga JSON sin comprimir similar a la siguiente:
200 OK [ { "id": 1, "type": "dog", "price": 249.99 }, { "id": 2, "type": "cat", "price": 124.99 }, { "id": 3, "type": "fish", "price": 0.99 } ]
Para recibir esta salida como una carga comprimida, el cliente de la API puede enviar una solicitud como la siguiente:
GET /pets Host: {petstore-api-id}.execute-api.{region}.amazonaws.com Accept-Encoding:gzip
El cliente recibe la respuesta con un encabezado Content-Encoding
y una carga codificada en GZIP similar a la siguiente:
200 OK Content-Encoding:gzip ... ���RP� J�)JV �:P^IeA*������+(�L �X�YZ�ku0L0B7!9��C#�&����Y��a���^�X
Cuando la carga de respuesta está comprimida, solo el tamaño de los datos comprimidos se tiene en cuenta al facturar la transferencia de información.