node-red - Node-red http 响应如何重定向到以 msg.payload 作为查询字符串的 URL
问题描述
我是 Node-red 的新手,并尝试使用 http 响应节点来重定向带有查询字符串的页面。
我阅读了这个问题,并通过更改节点成功使用了标头位置(我也尝试直接在 http 响应节点中设置属性)重定向到 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
. 谁能帮我解决这个问题?
解决方案
您可能必须自己构建查询字符串。
所以使用函数节点来设置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 msg;
仅当所有值都是数字时,此代码才是安全的,如果某些值是字符串,那么您需要确保在添加它们之前对它们进行 URLEncode。
如果事情变得更复杂,您可能应该将querystring
模块(doc)添加到全局上下文(如何将模块添加到全局上下文docmsg.payload
)并在函数节点中使用它从对象中一次性生成查询字符串。
推荐阅读
- html - 在 ngx-scrollreveal 中,ngsReveal 是隐藏组件,应该在滚动时进行动画处理
- c# - 如何洗牌datagridview?
- django - Django - 将模型 CharField 值设置为来自另一个模型的字段名称
- nested - Powerbuilder 获取嵌套数据窗口的对象
- python - 如何从行中获取 strptime 并与当前时间进行比较?
- javascript - 使用带有多个图像目标的 8th Wall SDK 进行增强
- swift - 将通用对象存储在异构数组中并将对象参数检索为正确的类型
- java - 无法从 hashmap 和 gson 获取正确的 json
- javascript - 无法导入 JavaScript 类
- python - 如何使用 python opencv 和 ffmpeg 同步视频和音频?