是否可以从外部网络访问使用Flask和Python构建的REST API?

时间:2019-05-28 07:34:27

标签: python flask

我正在尝试使用使用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上执行相同的操作,则页面将按预期加载。

2 个答案:

答案 0 :(得分:1)

这与您的代码无关。您只需要将请求从外部(公共)IP地址路由到网络中服务器的内部IP地址即可。如果您在家,则需要配置路由器。这通常称为port forwarding或端口映射。 您可能还想使用动态dns服务,因为大多数外部ip都会由您的ISP频繁更改。

答案 1 :(得分:1)

要访问Internet上的某些内容,您需要静态IP地址,该地址不会像ISP分配给您的动态IP一样更改。但是,有诸如this之类的服务将为您提供指向您的动态IP地址的dns名称,您还需要进行一些不安全的端口转发。