Google Cloud HTTP函数-为什么该函数对cURL json格式如此挑剔

时间:2020-01-13 10:48:55

标签: json http curl google-cloud-platform xmlhttprequest

我可以通过一些帮助来理解为什么我的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*

1 个答案:

答案 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