【问题标题】:Firebase function - http get parameters with acentuationFirebase 函数 - http 获取带有强调的参数
【发布时间】:2018-11-18 16:24:57
【问题描述】:

我有一个执行 http GET 的 firebase 函数。有 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);
});

有什么帮助吗?

【问题讨论】:

    标签: javascript node.js http google-cloud-functions


    【解决方案1】:

    无论何时构建 URL,都应正确转义所有查询字符串组件,以便它们包含 only valid characters。这就是encodeURIComponent() 的用途。 encode all your query string values 也可以这样做:

    var url = 'http://myapi.azurewebsites.net/api/values' +
        '?Parameter01=' + encodeURIComponent(nameParam) +
        '&Parameter02=' + encodeURIComponent(emailParam) +
        '&Parameter03=' + encodeURIComponent(serviceParam);
    

    还有其他更简洁的方法可以使用查询字符串组件构建 URL,但这应该可以正常工作。

    【讨论】:

    • 谢谢道格。工作。另一种选择是在 const serviceParam = servicoParamComAcentos.normalize('NFD').replace(/[\u0300-\u036f]/g, "") 之前清理参数
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-12
    • 1970-01-01
    • 2012-04-07
    相关资源
    最近更新 更多