Я создал лямбда-функцию, чтобы я мог использовать ее в целях проверки и затем передавать запрос на сервисный уровень. Затем ответ уровня обслуживания содержит двоичный двоичный объект (PDF), который проходит через лямбда-функцию, после чего шлюз API, наконец, достигает клиента.
Первая проблема, с которой мы столкнулись, заключалась в том, что PDF был преобразован или поврежден, только что возвращенный пустой PDF. А потом я нашел этот пост , который поначалу не имел для меня никакого смысла. Пока я не увидел это aws сделать c. Оказывается, необходимо закодировать двоичные данные в base64, а затем установить для индикатора isBase64Encoded значение true. В конечном итоге шлюз преобразует ответ обратно в двоичный двоичный объект.
TBH, я новичок в aws, и я не совсем понимаю, почему это так ... что плохого в прохождении исходного двоичного двоичного объекта, зачем нужны эти шаги преобразования?
Вот список вещей, которые я должен был сделать
- Настроил / как двоичный тип носителя на шлюзе. (Я пытался использовать application / pdf, но не сработал?)
- Убедитесь, что тело ответа от сервисного уровня не преобразовано в строку (я использую request и по умолчанию оно дает мне строку). Я отправляю
encoding: null
вместе с запросом - . Когда я получаю данные буфера из сервисного уровня, я использую Buffer для преобразования тела ответа в кодировку base64.
- In лямбда-вывод, я устанавливаю
isBase64Encoded
в true
Наконец, получите неизмененный PDF ...
Мне интересно, может ли кто-нибудь подтвердить, что я делаю ожидаемым образом? Или, может быть, если есть лучший способ?
Кроме того, когда мы устанавливаем двоичный тип носителя для поддержки / , разве это не означает, что он принимает все типы носителей? Но я только хочу, чтобы PDF поддерживали.