Sobes.tech
Back to questions
Junior — Middle
63

Можете объяснить принцип внедрения зависимостей в FastAPI и как он реализуется в этом фреймворке?

Companies where asked
Код Открытия
РЕСО-Лизинг
Оптимакрос
LuckyGroup

Answer from AI

sobes.tech AI

В FastAPI внедрение зависимостей реализуется через механизм, который позволяет автоматически создавать и передавать объекты или значения в обработчики запросов (эндпоинты).

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

Это достигается с помощью параметра Depends из модуля fastapi. Например:

from fastapi import FastAPI, Depends

app = FastAPI()

def get_db():
    db = create_db_session()
    try:
        yield db
    finally:
        db.close()

@app.get("/items/")
def read_items(db = Depends(get_db)):
    items = db.query_items()
    return items

Здесь get_db — функция-зависимость, которая создаёт сессию базы данных и гарантирует её закрытие после использования. FastAPI автоматически вызывает get_db и передаёт результат в параметр db функции read_items.

Таким образом, внедрение зависимостей в FastAPI упрощает управление ресурсами, повышает тестируемость и модульность кода.