node.js - 由nodejs express部署的Flutter Web应用程序会更改IP
问题描述
我有一个案例,我将 nodejs express 作为后端以及由颤振在同一节点中构建的一些前端静态内容。后端有一些发出请求的路由。这个运行的设备是一个树莓派,它可能会改变 IP。当来自后端的某些 IP 的颤动请求时,整个应用程序会在 raspi 更改 IP 时中断。静态内容有什么方法可以从后端动态请求吗?
带有静态内容的后端:
app.use(express.static(path.join(__dirname, 'public-flutter')))
app.get('/someEndPath', (req, res) => {
res.send('some response')
})
app.listen(port, () => {
console.log(`app listening at http://localhost:4000`)
})
和颤振客户端:
Future<String> getSomething() async {
String url = '192.168.1.10:4000'; //<-- Works fine now, until the device changes IP
final path = 'someEndPath';
final Map<String, String> _headers = {
'Accept': 'application/json',
'Access-Control-Allow-origin': '*'
};
http.Response response =
await http.get(Uri.http(url, path), headers: _headers);
if (response.statusCode == 200) {
//print(response.body);
return 'Something, not important';
} else {
print('no good response code');
return null;
}
}
解决方案
我现在可以看到,我可能对我的问题的解释很糟糕。无论如何,我现在有了我应该早点想到的解决方案。要动态获取 IP(非硬编码),您可以使用 Darts Uri 类中的 Uri.base。当客户端是浏览器时,Uri.base 是当前页面。Uri.base = window.location.href。如果客户端不是浏览器,则它是当前工作目录。
Future<String> getSomething() async {
String url = "${Uri.base.host}:${Uri.base.port}"; //<-- Solution
final path = 'someEndPath';
final Map<String, String> _headers = {
'Accept': 'application/json',
'Access-Control-Allow-origin': '*'
};
http.Response response =
await http.get(Uri.http(url, path), headers: _headers);
if (response.statusCode == 200) {
return 'Something, not important';
} else {
print('no good response code');
return null;
}
}
但是请注意,在本地开发时,flutter 会打开一个带有 url localhost:somePort 的 chrome 页面。如果您的后端不在本地计算机上,您将需要对地址进行硬编码,而不是像解决方案那样。
推荐阅读
- c# - Unicode 保留为纯文本,而不是显示为图标
- python - 在函数中初始化 Gekko 模块时出现“TypeError:‘模块’对象不可调用”
- asp.net-core - 如何在 blazor dotnetcore 3.1 中将隐藏的输入值绑定到父组件
- angular - 安装有未处理问题的 angular/cli
- python-3.x - 这个算法最坏情况的时间复杂度是多少?
- python - 使用 InceptionV3、VGG16 进行多类分类,有 101 个类,准确率非常低
- spring - Liferay 7 角色/权限问题:您没有访问此 portlet 所需的角色
- javascript - 如何以不同的方式显示 JSON 值
- r - 如何根据列名提取列?
- c# - 根据查询结果在三元运算符中创建对象