【发布时间】:2016-01-18 07:27:06
【问题描述】:
我有多个具有相同 URL 根的路由。 示例:
- abc/def/上传
- abc/def/list
- abc/def/page/{page_id}
我可以将 abc/def 定义为 URL 根吗? (类似于在 Java 中使用 Spring 或 Apache CXF 可以完成的事情)
谢谢
【问题讨论】:
标签: python flask flask-restful
我有多个具有相同 URL 根的路由。 示例:
我可以将 abc/def 定义为 URL 根吗? (类似于在 Java 中使用 Spring 或 Apache CXF 可以完成的事情)
谢谢
【问题讨论】:
标签: python flask flask-restful
在 flask-restful 中,可以在 api initialization 上为所有路由添加前缀:
>>> app = Flask(__name__)
>>> api = restful.Api(app, prefix='/abc/def')
然后您可以忽略任何前缀连接您的资源:
>>> api.add_resource(MyResource, '/upload')
>>> ...
【讨论】:
您可以使用APPLICATION_ROOT 键进行应用配置。
app.config['APPLICATION_ROOT'] = "/abc/def"
【讨论】:
我需要类似的所谓“上下文根”。我使用 WSGIScriptAlias 在 /etc/httpd/conf.d/ 下的 conf 文件中完成了它:
<VirtualHost *:80>
WSGIScriptAlias /myapp /home/<myid>/myapp/wsgi.py
<Directory /home/<myid>/myapp>
Order deny,allow
Allow from all
</Directory>
</VirtualHost>
所以现在我可以使用以下身份访问我的应用:http://localhost:5000/myapp
查看指南 - http://modwsgi.readthedocs.io/en/develop/user-guides/quick-configuration-guide.html
【讨论】:
只需使用来自Flask 的Blueprint:
app = Flask(__name__)
bp = Blueprint('', __name__, url_prefix="/abc/def")
def upload():
pass
def list():
pass
bp.add_url_rule('/upload', 'upload', view_func=upload)
bp.add_url_rule('/list', 'list', view_func=list)
...
app.register_blueprint(bp)
【讨论】: