Sobes.tech
Back to questions
Junior — Middle
60

Объясните принцип внедрения зависимостей в FastAPI и его основные особенности

Companies where asked
Код Открытия

Answer from AI

sobes.tech AI

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

Основные особенности:

  • Используется функция Depends, которая указывает FastAPI, что параметр нужно получить из зависимости.
  • Зависимости могут быть простыми функциями, которые возвращают нужный объект (например, подключение к базе, текущий пользователь).
  • 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(Item).all()
    return items

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

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