4.2 Зависимости в операциях пути и глобальные зависимости
2 из 2 шагов пройдено

Внедрение глобальных зависимостей

Зависимости в FastAPI возможно указать как глобальные зависимости. Глобальные зависимости FastAPI могут быть добавлены так же, как мы это сделали с декораторами операций пути. Но вместо декораторов мы можем добавить их в само приложение FastAPI. Например, мы можем добавить такие транзакции, как регистрация исключений, кэширование, логирование и авторизация пользователей, которые будут общие для любого приложения.

По аналогии с зависимостями пути, мы можем добавить глобальные зависимости. Изменим в файле main.py создание экземпляра класса FastAPI и добавим новую конечную точку и функцию зависимости:

log_user = []


def log_client(request: Request):
    log_user.append(request.headers)


app = FastAPI(dependencies=[Depends(log_client)])


@app.get("/log_user")
async def print_log_user():
    return {"user": log_user}

Мы написали функционал, в котором все данные посетителей нашего API будут добавляться в список. Проверим работу, для этого попробуем отправить в разных конечных точках запросы. И после перейдем в конечную точку Print Log User, и посмотрим ее ответ:

И мы видим что данная зависимость у нас выполняется при работе любой конечной точки. 

Мы довольно подробно рассмотрели FastAPI Dependency Injection с использованием Depends. В целом, система внедрения зависимостей FastAPI проста и интуитивно понятна. Именно это и делает ее довольно мощным инструментом с точки зрения гибкости.

В будущих разделах курса мы будем рассматривать более сложные способы использования внедрения зависимостей в FastAPI.


Будьте вежливы и соблюдайте наши принципы сообщества. Пожалуйста, не оставляйте решения и подсказки в комментариях, для этого есть отдельный форум.
Нет обсуждений. Начните первое.