【发布时间】:2018-10-29 11:38:16
【问题描述】:
有a catch-all URL example for Flask:
from flask import Flask
app = Flask(__name__)
@app.route('/', defaults={'path': ''})
@app.route('/<path:path>')
def catch_all(path):
return 'You want path: %s' % path
if __name__ == '__main__':
app.run()
装饰器可以翻译成以下代码,看起来更类似于 Flask-RESTful 实现相同功能:
app.add_url_rule('/', 'catch_all', catch_all, defaults={'path': ''})
app.add_url_rule('/<path:path>', 'catch_all', catch_all, defaults={'path': ''})
如果我是对的,这可以进一步翻译成等效的 Flask-RESTful 应用程序(至少调试显示它创建了相同的 URL 路由):
class RESTapp(Resource):
def get(self, path):
# do get something
api.add_resource(RESTapp, '/', '/<path:path>', defaults={'path': ''})
问题是这个应用程序将所有 URL 重定向到 / 并且我无法在 get() 函数中获取请求的路径。我想在与 Flask 相同的函数中处理所有路径(/ 和 '/'),但使用 Flask-RESTful。
类似问题:
- Catch-All URL in flask-restful Asker 不想捕捉 / 或者至少不想在与其他 URL-s 相同的功能中。
-
Flask restful API urls Answerer 提出两个类作为两个资源。我必须通过
resource_class_kwargs关键字参数初始化类,并且我只想保留一个实例,所以这对我不利。
我尝试过的:
- 为同一个类创建两个
add_resource调用。它以错误结束。 - 调试
add_resource。它表明它从 Endpoint 创建了一个资源视图函数,并将其提供给add_url_rule函数。否则,它的工作原理与随后的两个add_url_rule函数相同。
【问题讨论】:
标签: python flask flask-restful