首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将变量传递给openapi python flask控制器?

如何将变量传递给openapi python flask控制器?
EN

Stack Overflow用户
提问于 2020-02-24 20:56:23
回答 1查看 370关注 0票数 0

我在一个更大的python项目中使用生成的openapi python flask服务器(由openapi-generator-cli-4.2.3.jar生成)。其中一个openapi控制器需要访问我的数据库。另一个控制器需要一个对象列表。这两个信息都已经被python项目使用了。

我的想法是将所有需要的信息作为变量传递给main方法(在__main__.py中)。但是如何将变量传递给控制器或其中的函数呢?还有其他(更好的)方法吗?

openapi main方法:

代码语言:javascript
运行
复制
def main(): # add: db_connection:dict, my_object:list
    app = connexion.App(__name__, specification_dir='./openapi/')
    app.app.json_encoder = encoder.JSONEncoder
    app.add_api('openapi.yaml',
                arguments={'title': 'My API'},
                pythonic_params=True)
    app.run(port=8080)

谢谢你的帮助!

我在github上发现了以下问题,但没有实际的解决方案:https://github.com/zalando/connexion/issues/516

EN

回答 1

Stack Overflow用户

发布于 2020-02-24 21:38:07

你应该在de main函数之外实例化你的变量:

代码语言:javascript
运行
复制
db = SQLAlchemy()
ma = Marshmallow()
logger = factory_logger()

def init_api():
    app = connexion.App(__name__, specification_dir="./swagger/")
    app.add_api("swagger.yaml", arguments={"title": "files"})
    app.app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
    db.init_app(app.app)
    ma.init_app(app.app)
    app.app.before_request(before_request)
    return app

并在您和要使用的位置导入此变量:

代码语言:javascript
运行
复制
from my_server import db

代码语言:javascript
运行
复制
from my_server import logger
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60376413

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档