我正在尝试使用基本 DI 生成 Flask 路由,即映射方法作为路由处理程序,我是 Flask 的完全初学者,所以请注意我的基本技能
class myClass():
def __init__(self):
self.dbConnObj = DbToolsMySql('someconnection', 'slave')
self.dbConnObj.connect()
self.blueprint = Blueprint('myClass', __name__)
self.blueprint.add_url_rule('/my_method', view_func=self.my_method)
def my_method(self, event):
retun "hello"
然后在我的处理程序文件中
from flask import Flask
from flask_restful import Api, Resource
from src.app.services.myClassimport myClass
app = Flask(__name__)
app.register_blueprint(myClass.blueprint)
if __name__ == "main":
app.run()
很简单啊????但不工作......我收到以下消息
<块引用>Not Found 在服务器上找不到请求的 URL。如果你 手动输入网址,请检查拼写,然后重试。
答案 0 :(得分:0)
通常您会使用如下装饰器向 Flask 应用程序添加路由:
app = Flask(__name__)
@app.route('/some-endpoint')
def some_endpoint_handler():
# do something
pass
或者你可以像这样在没有装饰器的情况下添加:
def some_endpoint_handler():
# do something
pass
app = Flask(__name__)
app.route('/some-endpoint', methods=['GET'])(some_endpoint_handler)
因此,在您的场景中,您可以将 app.route 调用传递给 myClass 对象并像这样设置路由:
class myClass():
def __init__(self, router):
self.dbConnObj = DbToolsMySql('someconnection', 'slave')
self.dbConnObj.connect()
self.blueprint = Blueprint('myClass', __name__)
#self.blueprint.add_url_rule('/my_method', view_func=self.my_method)
router('/my_method', ['GET'])(self.my_method)
def my_method(self, event):
retun "hello"
myObj = myClass( app.route )
或者,反转依赖:
app = Flask(__name__)
@app.route(myClass.blueprint.some_endpoint_string)
def some_endpoint_handler():
myClass.blueprint.call_some_endpoint_handler()
pass
if __name__ == "main":
app.run()