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 подскажет развёрнутый ответ в реальном времени.