Как вернуть gzipped-контент с помощью AWS API Gateway

Мы разработали приложение, которое предлагает серверные службы отдыха и поддерживает заголовок Accept-Encoding для возврата сжатого содержимого через Content-Encoding:gzip значение заголовка.

Это приложение развертывается в экземплярах ec2 на aws, и когда мы отправляем запрос с Accept-Encoding значением, установите ответ правильно.

Мы хотим разоблачить этот api с помощью api-шлюза, но он просто работает для того, чтобы не сжимать запросы. Когда мы отправляем запрос с запросом на gzipped-контент, заголовок Content-Encoding устанавливается правильно, но содержимое ответа повреждено.

Нужно ли устанавливать какой-либо специальный параметр или конфигурацию в ответах на интеграцию или методах ответа метода?

С уважением.

Ответ 1

С 19 декабря 2017. AWS API Gateway поддерживает кодирование.

После создания API просто перейдите в "Настройки" и выберите "Включить кодировку содержимого".

См. пример

Также здесь является официальным релизом AWS.

Ответ 2

К сожалению, API Gateway в настоящее время не поддерживает HTTP-сжатие. Однако это необходимо для будущего развития.

Теперь вам нужно будет вернуть несжатый контент из вашей конечной точки (т.е. пропустить заголовок Accept-Encoding), чтобы проксировать его через шлюз API.

Если это работает для вашего варианта использования, вы можете в качестве альтернативы base64 кодировать сжатый контент, прокси-сервер через API-шлюз и декодировать его на клиенте.

Спасибо, Райан

Ответ 4

Я сделал это, добавив Accept-Encoding в AWS API Gateway Integration Request

Шаг 1: Перейдите в консоль AWS API Gateway, нажмите Integration Request введите описание изображения здесь

Шаг 2: Добавьте Accept-Encoding в HTTP Headers раздел, значение 'identity' (нужны одинарные кавычки) введите описание изображения здесь

Шаг 3: Нажмите ActionsDeploy API

Если вы используете AWS CloudFormation, вы можете добавить yaml Integration: RequestParameters: integration.request.header.Accept-Encoding: "'identity'

Ответ 5

Чтобы разрешить GZipped-контент с конечной точки HTTP-прокси, вы можете добавить */* в "Типы двоичных файлов", найденные в разделе "Двоичная поддержка" вашего API.