AWS Lambda возвращает как закодированные в base64 данные, так и текстовую строку в ответе тела - PullRequest
0 голосов
/ 12 апреля 2019

Я использую реализацию AWS Lambda с Node.js для создания файла PDF.У меня есть следующий callback, который возвращает PDF в закодированном результате base64.Это прекрасно работает для меня:

return callback(null, {
    statusCode: 200,
    body: new Buffer(data).toString('base64'),
    isBase64Encoded: true,
    headers: {
      'Content-Type': 'text',
    },
  })

Однако я хотел бы добавить в свой ответ дополнительную информацию - не только данные в кодировке PDF bae64, но и некоторые результаты типа string, которые я могу использовать в дальнейшемактивное приложение, подключенное к этой лямбда-функции.Я хотел бы вернуть данные base64 и строковые данные, что-то вроде этого:

return callback(null, {
    statusCode: 200,
    body: JSON.stringify(
        {
            message: 'hello world',
            report: new Buffer(data).toString('base64')
        }
    ),
    isBase64Encoded: true,
    headers: {
      'Content-Type': 'text',
    },
  })

Но мне это не удается.Как бы я реорганизовал вышеупомянутое, чтобы вернуть и строковые данные и данные base64?Мне также нужно принудительно установить для параметра isBase64Encoded значение true, что может противоречить моему новому требованию возвращать как base64, так и обычные строковые данные.

1 Ответ

1 голос
/ 12 апреля 2019

Content-Type вашего ответа не text - поскольку вы возвращаете JSON, значение application/json будет иметь больше смысла и может решить некоторые проблемы, с которыми вы столкнулись. Было бы полезно, если бы пост мог быть обновлен с более подробной информацией об ошибках, с которыми вы сталкиваетесь.

Еще один возможный обходной путь - добавить message (и любые другие строковые значения) в качестве заголовков HTTP к ответу с кодировкой base64, который у вас уже работает. Затем ваш клиент может декодировать ответ HTTP, тело которого содержит закодированные в base64 PDF и заголовки HTTP x-custom-message (или что-то подобное), установленное на hello world.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...