Recepción de una respuesta de API con una carga comprimida - Amazon API Gateway

Recepción de una respuesta de API con una carga comprimida

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 ejemplo Accept-Encoding:gzip, deflate, br) automáticamente para las solicitudes habilitadas para compresión. Esto puede activar la compresión de la carga en API Gateway. Sin una especificación explícita de los valores del encabezado Accept-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.