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

问题描述 投票:0回答:1

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

我读了this question,并成功使用标题位置重定向到URL。我的目标是使用msg.payload作为查询字符串重定向到网站。我的msg.payload包含一个简单的JSON对象,例如

{"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。有人可以帮我这个忙吗?

node-red
1个回答
0
投票

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

因此,使用功能节点设置location标头将类似于:

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;

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

[如果事情变得更复杂,您可能应该将querystring模块(doc)添加到全局上下文中(如何将模块添加到全局上下文doc中),并在函数节点中使用它来生成查询字符串从msg.payload对象开始。

© www.soinside.com 2019 - 2024. All rights reserved.