使用 Connexion 时访问 before_request 等 Flask 方法

Access Flask methods like before_request when using Connexion

我正在使用 Connexion 构建 API,所以我使用 app = connexion.FlaskApp(__name__) 而不是 Flask(__name__)

我想添加 before_requestafter_request 处理程序来打开和关闭数据库连接。但是,由于 app 是一个 connexion.FlaskApp 对象,因此不存在这些装饰器方法。

@app.before_request
def before_request():
    g.db = models.db
    g.db.connection()


@app.after_request
def after_request():
    g.db.close()

如何在使用 Connexion 时使用 before_request 和其他 Flask 方法?

Connexion 实例将 Flask 实例存储为 app attribute。您仍然可以通过它使用 Flask 可用的所有东西。

app = connexion.FlaskApp(__name__)

@app.app.before_request
def open_db():
    ...

Connexion 本身就是这样做的,例如他们的 route 方法传递给 self.app.route.