如何使用flask发布可供其他机器调用的webservice

我用VS2015建立了一个flask项目,代码如下:

views.py:


from datetime import datetime
from flask import render_template
from flask import Flask
from FlaskWebProject1 import app

@app.route('/')
@app.route('/home')
def home():
    return render_template(
        'index.html',
        title='Home Page'
    )

@app.route('/greeting/<surname>/<lastname>')
def greeting(surname,lastname):
    return ("Hello "+surname+" "+lastname)

runserver.py:

"""
This script runs the FlaskWebProject1 application using a development server.
"""

from os import environ
from FlaskWebProject1 import app

if __name__ == '__main__':
    HOST = environ.get('SERVER_HOST', 'localhost')
    try:
        PORT = int(environ.get('SERVER_PORT', '5555'))
    except ValueError:
        PORT = 5555
    app.run(host = "0.0.0.0", port = 8081, debug = False)

根据flask官方教程:
图片描述

我将host设为0.0.0.0,运行后显示:Running on http://0.0.0.0:8081/
使用cmd 键入ipconfig/all 回车后 查的我的IP地址是192.168.1.101这个是内网IP地址吗?
百度“本机IP”后,显示的本机IP地址是183.62.69.42,这个是公网IP地址吗?
我在自己的机器的浏览器地址栏中,输入192.168.1.101:8081/greeting/a/b,成功调用了函数,
但输入183.62.69.42:8081/greeting/a/b后,失败。请问这是为什么?
如果别的机器(内网或外网)想访问我的webservice,应该在浏览器地址栏输入什么地址?

这是ipconfig内容截图:
图片描述

阅读 5.6k
1 个回答

如果是内网访问的话,192.168.1.101:8081/greeting/a/b 就可以了。

如果是外网访问的话,并且主机运行在楼主自己的局域网内的话,可能就比较麻烦了。
应该是需要 外网ip并且在路由器上做端口映射之类的(没做过,也不是很清楚)

所以楼主如果是想提供外网能访问的服务的话,还是去租用个云服务器比较省事、稳定。
买服务器的时候,会为你分配外网ip的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题