python - 可以从外部网络访问使用 Flask 和 Python 构建的 REST API 吗?
问题描述
我正在尝试使用使用 Flask 和 Python 构建的 REST API 从我的 Raspberry Pi 创建一个服务器并从我的 iPhone 访问它。我有一个非常简单的问题:我可以从创建它的网络以外的网络访问服务器吗?因此,例如,如果服务器是在我的家庭 wifi 上创建的,我可以从我的工作场所 wifi 访问它吗?如果是这样,怎么做?
目前,我可以从连接到同一网络的任何设备访问服务器。我在网上看到了很多关于类似问题的类似帖子,但我无法找到上述问题的直接答案。
这是我的代码:
from flask import Flask, jsonify, request
app = Flask(__name__)
@app.route("/test")
def hello():
return jsonify({"about":"Hello World"})
if __name__ == '__main__':
app.run(host="0.0.0.0", port=2000,debug=True)
如果我在 iPhone 上连接到移动数据时进入 Safari 并输入“ http://RaspberryPiIP:2000/test ”,那么页面将无法加载并且“响应时间过长”。但是,如果我在我的家庭 wifi 上做同样的事情,树莓派也连接到,页面将按预期加载。
解决方案
这与您的代码无关。您只需将来自外部(公共)IP 地址的请求路由到网络中服务器的内部 IP 地址。如果您在家,则需要配置路由器。这通常称为端口转发或端口映射。您可能还想使用动态 dns 服务,因为您的 ISP 会经常更改大多数外部 ip。
推荐阅读
- sql - convert_timezone 对雪花 sql 中的 timestampdiff 没有意义
- html - 通过引用邻居部分的条件 CSS 选择器
- c# - 根据登录的用户 ID 分隔列表
- java - 如何添加 myApp 以使用完成操作?
- python - 尝试从文本中提取表情符号时出现空白列
- python - 如何使用包含文件路径的 2 项元组列表
- python - 重构 Python 类以采用动态参数而不显着改变调用模式
- reactjs - react.js如何形成卡片组
- oracle-apex - 对话框关闭时在新选项卡中打开页面并请求!= DELETE
- parsing - 使用 Unified 解析 Markdown,里面有 HTML