我有一个作为后端的Flask应用程序,它提供REST和AngularJS前端应用程序。
我使用Grunt/Livereload在地址:http://localhost:5000/
的前端服务
在开发过程中,是否可以在本地主机的子url上使用来自werkzeug的app.run()
或run_simple
来服务Flask应用程序?具体来说,我希望可以在地址:http://localhost:5000/api
上访问该应用程序。
我找到了这个解决方案,但是它的缺点是在http://localhost:5000/
上提供一个虚拟应用程序,它使用这个地址,并且不允许我在那个地址上提供AngularJS应用程序。
发布于 2013-12-01 12:26:32
设置瓶和约曼的方式--您实际上不能这样做--它是可能有两个进程共享同一个端口,但通常是为了允许一个主进程将单个请求传递给子进程,这并不完全是您在这里所做的。(通常,在生产中,您可以在代理服务器(如nginx)后面运行前端和后端。)
幸运的是,你不必为了开发你的应用而重新发明方向盘或运行一个单独的代理服务器--有一个名为咕噜-连接-代理的Grunt插件,它可以让你向另一个地方的子url请求代理。这将使您可以在另一个端口(例如端口5001)上拆分您的Flask后端服务器,并将代理请求转到localhost:5000/api
(例如)到localhost:5001/
。
connect: {
options: {
port: 5000,
hostname: 'localhost'
},
proxies: [
{
context: '/api',
host: '127.0.0.1',
port: 5001,
https: false,
changeOrigin: false,
xforward: false
}
]
}
然后你可以用app.run(port=5001)
运行你的烧瓶应用程序。
发布于 2013-11-29 18:38:24
这对我来说很管用
from flask import Flask
prefix = '/abc'
app = Flask(__name__)
# redefine route
def route(path, *args, **kwargs):
return _route(prefix + path, *args, **kwargs)
_route = app.route
app.route = route
# Test function
@app.route('/')
def hello_world():
return 'Hello World!'
if __name__ == '__main__':
app.run()
https://stackoverflow.com/questions/20295774
复制相似问题