我可以通过一些帮助来理解为什么我的Google Cloud Function对在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计算机,并且在安装了node(10)的终端上使用(如果重要)。
1。是什么让我需要删除单引号并添加反斜杠,这种格式是否具有名称或关键字?
2。。问题1的答案可以在原始javascript XMLHttpRequest中使用吗?因为我无法成功应用我的卷曲修改。
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);
}
}
我尝试过将许多参数传递给发送,包括:
var body = {};
body.name = 'Jane';
*passing body into xhr.send*
var body = `{\"name\",\"Jane\"};
*passing body into xhr.send*
答案 0 :(得分:0)
这不是Google Cloud Function,而是Windows版本的CURL命令,在发布JSON有效负载时单引号存在问题。
看看以下似乎讨论相同问题但在不同上下文中的线程:
https://superuser.com/questions/1016710/how-to-make-a-curl-post-call-in-windows https://superuser.com/questions/1291352/curl-command-runs-in-linux-but-not-windows-2008