Параметр 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"}
Пример
Давайте добавим две глобальные зависимости: одну для проверки токена, другую для логирования пути запроса:
При запросе к адресу '/user' с корректным заголовком
в консоль выведется путь запроса, а клиент получит JSON:
{"name": "user"}
Смотрите также
-
класс
FastAPI,
который создаёт приложение и принимает параметр dependencies -
метод
include_router,
который подключает роутер с общими зависимостями -
метод
add_api_route,
который добавляет маршрут с индивидуальными зависимостями -
параметр
route.dependencies,
который задаёт зависимости для конкретного маршрута