Sobes.tech
Junior — Middle
64

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

Companies where asked
Оптимакрос

Answer from AI

sobes.tech AI

В FastAPI механизм внедрения зависимостей реализован через систему параметров функций с использованием Python type hints и специального декоратора 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/")
async def read_items(db = Depends(get_db)):
    items = db.query_items()
    return items

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