Mediumfastapidi

Что такое зависимости (Depends) в FastAPI?

1Постановка

Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.

2Решение

FastAPI dependency injection через Depends. Зависимость вызывается при каждом запросе, результат передаётся в handler. Sub-dependencies, cleanup через yield, override для тестов.

from fastapi import Depends

# Базовая зависимость
def common_params(q: str | None = None, skip: int = 0, limit: int = 100):
    return {'q': q, 'skip': skip, 'limit': limit}

@app.get('/items/')
async def read_items(commons: dict = Depends(common_params)):
    return commons

# Cleanup через yield
def get_db():
    db = Session()
    try:
        yield db
    finally:
        db.close()

# Globals — для всех роутов
app = FastAPI(dependencies=[Depends(verify_token)])

# Override для тестов
app.dependency_overrides[get_db] = get_test_db
  • Caching: зависимость с теми же args выполняется один раз за request;
  • Class as dependency — FastAPI инстанцирует;
  • Security: OAuth2PasswordBearer, HTTPBearer — специальные security dependencies.

3Как отвечать

  • Сначала уточните условия и ограничения, покажите аналитическое мышление.
  • Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
  • Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡

На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.