Как передать переменные в контроллер openapi python flask? - PullRequest
0 голосов
/ 24 февраля 2020

Я использую сгенерированный сервер openapi python flask (сгенерированный openapi-generator-cli-4.2.3.jar) в большем python проекте. Один из контроллеров openapi нуждается в доступе к моей базе данных. Другой контроллер нуждается в списке объектов. Обе информации уже используются проектом python.

Моя идея - передать всю необходимую информацию в качестве переменных в метод main (в __main__.py). Но как я могу передать переменные в контроллер или функцию в нем? Есть ли другие (лучшие) способы?

openapi основной метод:

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

1 Ответ

0 голосов
/ 24 февраля 2020

Вы должны создать свои переменные вне функции de main:

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

И импортировать эти переменные, где вы и должны использовать:

from my_server import db

или

from my_server import logger
...