Загрузка...

Вопрос по FastAPI

Тема в разделе Python создана пользователем Stalkie 18 дек 2024. 189 просмотров

  1. Stalkie
    Stalkie Автор темы 18 дек 2024 102 8 апр 2017
    Если в роутинге я укажу две зависимости Depends() то во вторую зависимость попадёт результат выполнения первой зависимости как параметр, или в Depends попадают только изначально заданные параметры.
    Пример:
    Есть роут где нужна авторизация, в зависимостях будет функция которая достаёт из кук jwt_token после чего проверяет его в db. Если я db (то есть сессию) вызову как зависимость в роуте перед зависимостью которая должна принять AsyncSession, попадёт ли AsyncSession в db?

    Код:

    Python
    @app.get("/")
    async def home(db: AsyncSession = Depends(get_session), user: UserSchema = Depends(get_current_user)):
    pass

    async def get_current_user(request: Request, db:AsyncSession):
    pass
    #request попадает автоматически, попадёт ли db?
     
  2. Toil
    Toil 18 дек 2024 ������� ������ :coder: 3543 18 ноя 2018
    параметр-зависимость не передается в другие зависимости, но ты можешь аналогичным образом добавить получение нужного параметра внутри своей функции

    Python
    @app.get("/")
    async def home(db: AsyncSession = Depends(get_session), user: UserSchema = Depends(get_current_user)):
    pass

    async def get_current_user(request: Request, db: AsyncSession = Depends(get_session)):
    pass
     
    1. Stalkie Автор темы
      Toil, спасибо, но тогда не оч понятно нахуя мне в моей функции Depends если по сути основная цель Depends, эт передать параметры из вызываемой функции внутрь функции переданной в Depends. Проще тогда будет

      Код
      async def get_current_user(request: Request, db: AsyncSession = get_session()):
      pass
Top
Загрузка...