Как в FastAPI делается инверсия зависимостей
Python
Middle
Без компании
Как в FastAPI делается инверсия зависимостей
Ответы
FastAPI использует механизм Dependency Injection (DI) через декоратор `@app.depends()`. Зависимости объявляются как функции, которые могут принимать параметры запроса, другие зависимости и возвращать значения.
Пример:
```
from fastapi import FastAPI, Depends
app = FastAPI()
def get_db():
db = "db_connection"
try:
yield db
finally:
print("Close connection")
@app.get("/items/")
async def read_items(db: str = Depends(get_db)):
return {"db": db}
```
Ключевые моменты:
- Зависимости могут быть функциями или классами
- Поддерживаются асинхронные зависимости
- Можно использовать `yield` для управления жизненным циклом (как в примере с БД)
- Зависимости могут зависеть от других зависимостей
- FastAPI автоматически разрешает зависимости при обработке запроса
Для сложных сценариев можно использовать `Depends()` в маршрутах, зависимостях и даже в других зависимостях, создавая иерархию.