Существует пример универсального URL для 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 в флеш-отдыхе Аскер не хочет перехватывать / или, по крайней мере, не в тех же функциях, что и другие URL-ы.
- URL-адреса API для проверки состояния колбы Ответчик предлагает два класса в качестве двух ресурсов . Я должен инициализировать класс с помощью
resource_class_kwargs
аргумента ключевого слова и Я хочу сохранить только один экземпляр, так что это не будет хорошо для меня .
Что я пробовал:
- Создайте два
add_resource
вызова для одного и того же класса. Это заканчивается ошибкой.
- Отладка
add_resource
. Он показывает, что он создает функцию просмотра ресурсов из конечной точки, и она передается функции add_url_rule
. В противном случае он работает так же, как две последующие функции add_url_rule
.