Получить тело запроса на стороне сервера
Клиент отправляет POST-запрос:
const array = [1, 2, 3];
fetch("https://...yandexcloud.net/save-questions", {
method: 'POST',
mode: "no-cors",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify(array)
});
На стороне сервера вызывается функция:
module.exports.handler = async function (event, context) {
console.log(JSON.stringify(event.body));
Результат: "WzEsMiwzXQ=="
Что надо еще указать, чтобы можно было на стороне сервера получить нужный мне объект в расшифрованном виде? Сервер находится в Yandex Cloud. Может в облаке нужно еще что-то настроить. Спасибо.
Ответы (2 шт):
В итоге сделал так:
const valueString =
Buffer
.from(JSON.stringify(event.body), 'base64')
.toString("utf8");
const myObjects = JSON.parse(valueString) as MyObject[];
Намёк на то, что можно закрыть вопрос, т.к. Вы нашли решение.
В общем-то, я подтверждаю Вам, что решение Вы нашли => закрытие вопроса (или фарм голосов?):
Buffer.from(data, 'base64')
Вместо 'base64' может быть hex, utf8 и прочие (см. вторую ссылку)
Подробнее о методе: https://nodejs.org/api/buffer.html#static-method-bufferfromstring-encoding
Подробнее о вариантах (де)кодирования: https://www.w3resource.com/node.js/nodejs-buffer.php
.toString() также поддерживает эти варианты.
Примеры, где это также может быть полезно: Buffer<-'binary' (де-факто):
require('node:crypto').createHash(/*к примеру*/'md5').update(data, 'hex')require('node:fs').readFileSync(data, 'utf8')