Receber uma resposta da API com uma payload compactada no API Gateway
Ao fazer uma solicitação em uma API habilitada para compactação, o cliente pode optar por receber uma carga de resposta compactada de um determinado formato especificando um cabeçalho Accept-Encoding
com uma codificação de conteúdo compatível.
O API Gateway só compacta a carga de resposta quando as seguintes condições são atendidas:
-
A solicitação de entrada tem o cabeçalho
Accept-Encoding
com uma codificação e formato de conteúdo compatíveis.nota
Se o cabeçalho não estiver configurado, o valor padrão será
*
conforme definido na RFC 7231. Nesse caso, o API Gateway não compacta a carga. Algum navegador ou cliente pode adicionar Accept-Encoding
(por exemplo,Accept-Encoding:gzip, deflate, br
) automaticamente para solicitações habilitadas para compactação. Isso pode ativar a compactação de carga útil no API Gateway. Sem uma especificação explícita dos valores de cabeçalhoAccept-Encoding
compatíveis, o API Gateway não compacta a carga. -
A definição de
minimumCompressionSize
na API habilita a compactação. -
A resposta de integração não tem um cabeçalho
Content-Encoding
. -
O tamanho da carga da resposta de integração, após a aplicação do modelo de mapeamento adequado, é maior ou igual ao valor especificado em
minimumCompressionSize
.
O API Gateway aplica qualquer modelo de mapeamento que estiver configurado para a resposta de integração antes de compactar a carga. Se a resposta de integração contiver um cabeçalho Content-Encoding
, para o API Gateway, a carga da resposta de integração já estará compactada, e o processamento de compactação será ignorado.
Como exemplo, veja a API PetStore e a seguinte solicitação:
GET /pets Host: {petstore-api-id}.execute-api.{region}.amazonaws.com Accept: application/json
O backend responde à solicitação com uma carga JSON não compactada que é semelhante à seguinte:
200 OK [ { "id": 1, "type": "dog", "price": 249.99 }, { "id": 2, "type": "cat", "price": 124.99 }, { "id": 3, "type": "fish", "price": 0.99 } ]
Para receber essa saída como uma carga compactada, o cliente da API pode enviar uma solicitação como esta:
GET /pets Host: {petstore-api-id}.execute-api.{region}.amazonaws.com Accept-Encoding:gzip
O cliente recebe a resposta com um cabeçalho Content-Encoding
e a carga codificada por GZIP semelhante a esta:
200 OK Content-Encoding:gzip ... ���RP� J�)JV �:P^IeA*������+(�L �X�YZ�ku0L0B7!9��C#�&����Y��a���^�X
Quando a carga de resposta é compactada, a cobrança pela transferência de dados leva em conta apenas o tamanho dos dados compactados.