Я мог бы немного помочь понять, почему моя облачная функция Google так требовательна к формату, который я передаю JSON.
Я следовал этому руководству из Google Cloud . В самом первом примере на странице вы создали функцию, подобную этой:
exports.helloHttp = (req, res) => {
res.send(`Hello ${escapeHtml(req.query.name || req.body.name || 'World')}!`);
};
Затем они просят вас вызвать ее с помощью curl:
curl -X POST HTTP_TRIGGER_ENDPOINT -H "Content-Type:application/json" -d '{"name":"Jane"}'
К моему удивлению, я не смог заставить его работать, я потратил много времени, играя с параметрами и параметрами, пока это не сработало для меня:
curl -X POST HTTP_TRIGGER_ENDPOINT -H "Content-Type:application/json" -d {\"name\":\"Jane\"}
Я использую машину Windows 10 и на терминале с узлом ( 10) установлено (в случае, если это имеет значение).
1. Что заставляет меня удалять одинарные кавычки и добавлять обратную косую черту, имеет ли этот формат имя или ключевые слова?
2. Можно ли использовать ответ на вопрос 1 в ванильном javascript XMLHttpRequest? Так как я не смог успешно применить свои модификации curl.
var xhr = new XMLHttpRequest();
xhr.open("POST", "myFunctionURL");
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.send(`{\"name\":\"Jane"}`);
xhr.onreadystatechange = function () {
if (xhr.readyState === 4) {
console.log('response: ', JSON.stringify(xhr), ' status: ', xhr.status);
}
}
Я попытался передать множество параметров в send, включая:
var body = {};
body.name = 'Jane';
*passing body into xhr.send*
var body = `{\"name\",\"Jane\"};
*passing body into xhr.send*