Я использую лямбда-прокси API Gateway и пытаюсь вернуть двоичный ответ application/protobuf
.Независимо от того, что я делаю, тело ответа всегда является строкой в кодировке base64
- У меня есть
application/protobuf
, настроенный как binary media types
в APIG - Мой клиент (javascript) отправляетследующие заголовки в
POST
:
Accept: application/protobuf
Content-Type: application/protobuf
- Моя лямбда отвечает
content-type: application/protobuf
и правильно устанавливает IsBase64Encoded
Лямбда-ответ на true
Как сделатьвы получаете APIG для base64 декодирования строки?Клянусь, у меня это работало несколько месяцев назад, когда я впервые попробовал это.
Примечание: я также попробовал */*
как binary media types
Некоторые похожие посты, чтобы добавить фон:
Обновление:
Оказывается, я могу только получитьэто работает, если binary media type
установлено на */*
.Заголовок Accept
клиента не оказывает влияния после его установки.
Множество плохих побочных эффектов от использования */*
, потому что каждый ответ пытается декодироваться (даже если IsBase64Encoded имеет значение false или не установлен)
Я думал, что это не декодирование, потому что инструменты проверки сети Chrome всегда будут отображать двоичные данные в виде base64, закодированного на вкладке Preview
.Вы можете увидеть protobuf на вкладке Response
.