我试图将一个JSON公开为一个POST请求,在那里我试图用另一个值来附加这个基本url。
我怎样才能得到基本的url值?
我尝试使用:
var root = RED.settings.httpNodeRoot;但随后它只返回了/,因为我期望的是像http://localhost:1880这样的内容。
是否可以通过使用任何node-red api来获取基本url?任何帮助都将不胜感激。
发布于 2017-03-14 21:19:34
它不是直接可用的,但您可以从一些可用的部件中组装它。
看看Wemo nodes中的subscribe函数
基本上,您可以从RED.settings对象获取端口和路径,但IP地址在很大程度上取决于您正在运行的机器。默认情况下,Node-RED绑定到0.0.0.0 (这是所有可用IP地址的缩写)。
如果你在比0.12.x更新的NodeJS上运行,那么你可以得到默认路由的IP地址,这通常是一个合理的猜测。对于NodeJS 0.10.x,您几乎只能猜测。
var ipAddr;
//device.ip
var interfaces = os.networkInterfaces();
var interfaceNames = Object.keys(interfaces);
for (var name in interfaceNames) {
if (interfaceNames.hasOwnProperty(name)) {
var addrs = interfaces[interfaceNames[name]];
for (var add in addrs) {
if (addrs[add].netmask) {
//node 0.12 or better
if (!addrs[add].internal && addrs[add].family == 'IPv4') {
if (ip.isEqual(ip.mask(addrs[add].address,addrs[add].netmask),ip.mask(device.ip,addrs[add].netmask))) {
ipAddr = addrs[add].address;
break;
}
}
} else {
//node 0.10 not great but best we can do
if (!addrs[add].internal && addrs[add].family == 'IPv4') {
ipAddr = addrs[add].address;
break;
}
}
}
if (ipAddr) {
break;
}
}
}
var callback_url = 'http://' + ipAddr + ':' + settings.uiPort;
if (settings.httpAdminRoot) {
callback_url += settings.httpAdminRoot;
}看着这段代码提醒我,如果启用了HTTPS,我必须添加一个修复程序……
https://stackoverflow.com/questions/42786793
复制相似问题