Receber uma resposta da API com uma payload compactada no API Gateway - Amazon API Gateway

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çalho Accept-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.