Node-red http 响应如何以 msg.payload 作为查询字符串重定向到 URL

How Node-red http response redirect to an URL with msg.payload as a query string

我是 Node-red 的新手,尝试使用 http 响应节点重定向带有查询字符串的页面。

我阅读 并通过更改节点成功使用 header 位置(我也尝试直接在 http 响应节点中设置属性)重定向到 URL。我的目标是重定向到以 msg.payload 作为查询字符串的网站。 我的 msg.payload 包含一个简单的 JSON object 就像

{"id":"1", "condition":2, "nset":3}

我尝试将位置设置为 http://[redirect_website]/getinfo?{{payload}},但我被重定向到 http://[redirect_website]/getinfo?{{payload}} 而不是 http://[redirect_website]/getinfo?id=1&condition=2&nset=3。谁能帮我解决这个问题?

您可能必须自己构建查询字符串。

所以使用函数节点来设置 location header 它会是这样的:

msg.statusCode = 303;
msg.headers = {
    Location: "https://example.com/getinfo?id=" +
    msg.payload.id + "&condition=" +
    msg.payload.condition + "&nset=" +
    msg.payload.nset;
}
delete msg.payload;
return msg;

此代码仅在所有值都是数字时才是安全的,如果某些值是字符串,那么您需要确保在添加它们之前对它们进行 URLEncode。

如果事情变得更复杂,您可能应该添加 querystring 模块 (doc) to the global context (how to add modules to the global context doc) 并在函数节点中使用它从 [=13= 中一次性生成查询字符串] object。