Можете объяснить механизм внедрения зависимостей в FastAPI и как он реализуется?
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. Такой подход упрощает тестирование, повторное использование кода и управление жизненным циклом зависимостей.