我有一个firebase函数来执行http GET。有3个参数,所有参数都可以正常工作,但如果其中一个参数包含动态,Firebase控制台不会显示任何错误,但GET不会执行。在这种情况下,问题出在Parameter03上。
var url = 'http://myapi.azurewebsites.net/api/values?Parameter01=' + nameParam + '&Parameter02=' + emailParam + '&Parameter03=' + serviceParam ;
http.get(url, (resp) => {
res.setEncoding('utf8');
}).on("error", (err) => {
console.log("Error : " + err.message);
});
请帮忙吗?
无论何时构建URL,都应该正确地转义所有查询字符串组件,使其仅包含有效字符。这就是encodeURIComponent((的作用。因此,请对所有查询字符串值进行如下编码:
var url = 'http://myapi.azurewebsites.net/api/values' +
'?Parameter01=' + encodeURIComponent(nameParam) +
'&Parameter02=' + encodeURIComponent(emailParam) +
'&Parameter03=' + encodeURIComponent(serviceParam);
还有其他更干净的方法可以使用查询字符串组件构建URL,但这应该可以正常工作。