РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
34 of 307 menu

Параметр dependencies

Параметр dependencies передаётся в конструктор класса FastAPI. Он принимает список объектов Depends. Зависимости из этого списка применяются ко всем маршрутам приложения, включая те, что были добавлены через декораторы и через include_router. Это удобно для сквозной логики: проверки токена, логирования, ограничения доступа.

Синтаксис

app = FastAPI(dependencies=[Depends(func), ...])

Пример

Давайте создадим зависимость, которая проверяет наличие заголовка 'x-token', и подключим её глобально:

from fastapi import FastAPI, Depends, Header, HTTPException def verify_token(x_token: str = Header()): if x_token != 'secret': raise HTTPException(status_code=400, detail='Invalid token') app = FastAPI(dependencies=[Depends(verify_token)]) @app.get('/') def index(): return {'text': 'hello'}

Теперь при запросе к корню приложения без заголовка 'x-token' сервер вернёт ошибку 400. Результат выполнения кода при корректном запросе:

{"text": "hello"}

Пример

Давайте добавим две глобальные зависимости: одну для проверки токена, другую для логирования пути запроса:

<+python+> from fastapi import FastAPI, Depends, Header, HTTPException, Request def verify_token(x_token: str = Header()): if x_token != 'secret': raise HTTPException(status_code=400, detail='Invalid token') def log_path(request: Request): print(f'Request path: {request.url.path}') app = FastAPI(dependencies=[Depends(verify_token), Depends(log_path)]) @app.get('/user') def get_user(): return {'name': 'user'} <-python+>

При запросе к адресу '/user' с корректным заголовком в консоль выведется путь запроса, а клиент получит JSON:

{"name": "user"}

Смотрите также

  • класс FastAPI,
    который создаёт приложение и принимает параметр dependencies
  • метод include_router,
    который подключает роутер с общими зависимостями
  • метод add_api_route,
    который добавляет маршрут с индивидуальными зависимостями
  • параметр route.dependencies,
    который задаёт зависимости для конкретного маршрута
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить