Ответ 1
С 19 декабря 2017. AWS API Gateway поддерживает кодирование.
После создания API просто перейдите в "Настройки" и выберите "Включить кодировку содержимого".
Также здесь является официальным релизом AWS.
Мы разработали приложение, которое предлагает серверные службы отдыха и поддерживает заголовок Accept-Encoding
для возврата сжатого содержимого через Content-Encoding:gzip
значение заголовка.
Это приложение развертывается в экземплярах ec2 на aws, и когда мы отправляем запрос с Accept-Encoding
значением, установите ответ правильно.
Мы хотим разоблачить этот api с помощью api-шлюза, но он просто работает для того, чтобы не сжимать запросы. Когда мы отправляем запрос с запросом на gzipped-контент, заголовок Content-Encoding
устанавливается правильно, но содержимое ответа повреждено.
Нужно ли устанавливать какой-либо специальный параметр или конфигурацию в ответах на интеграцию или методах ответа метода?
С уважением.
С 19 декабря 2017. AWS API Gateway поддерживает кодирование.
После создания API просто перейдите в "Настройки" и выберите "Включить кодировку содержимого".
Также здесь является официальным релизом AWS.
К сожалению, API Gateway в настоящее время не поддерживает HTTP-сжатие. Однако это необходимо для будущего развития.
Теперь вам нужно будет вернуть несжатый контент из вашей конечной точки (т.е. пропустить заголовок Accept-Encoding), чтобы проксировать его через шлюз API.
Если это работает для вашего варианта использования, вы можете в качестве альтернативы base64 кодировать сжатый контент, прокси-сервер через API-шлюз и декодировать его на клиенте.
Спасибо, Райан
Только обходной путь, но если вы установите Accept-Encoding: identity
, вы должны правильно получить результат (вопреки связанным обсуждениям я нашел его работает для POST и GET).
Я сделал это, добавив Accept-Encoding
в AWS API Gateway Integration Request
Шаг 1:
Перейдите в консоль AWS API Gateway, нажмите Integration Request
Шаг 2:
Добавьте Accept-Encoding
в HTTP Headers
раздел, значение 'identity'
(нужны одинарные кавычки)
Шаг 3:
Нажмите Actions
→ Deploy API
Если вы используете AWS CloudFormation
, вы можете добавить
yaml
Integration:
RequestParameters:
integration.request.header.Accept-Encoding: "'identity'
Чтобы разрешить GZipped-контент с конечной точки HTTP-прокси, вы можете добавить */* в "Типы двоичных файлов", найденные в разделе "Двоичная поддержка" вашего API.