Можете объяснить принцип внедрения зависимостей в FastAPI и как он реализуется в этом фреймворке?
Answer from AI
sobes.tech AI
В FastAPI внедрение зависимостей реализуется через механизм, который позволяет автоматически создавать и передавать объекты или значения в обработчики запросов (эндпоинты).
Принцип заключается в том, что вы описываете функцию или класс, который предоставляет нужный ресурс (например, подключение к базе данных, сервис, конфигурацию), а FastAPI автоматически вызывает эту функцию и передаёт результат в ваш обработчик.
Это достигается с помощью параметра 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/")
def read_items(db = Depends(get_db)):
items = db.query_items()
return items
Здесь get_db — функция-зависимость, которая создаёт сессию базы данных и гарантирует её закрытие после использования. FastAPI автоматически вызывает get_db и передаёт результат в параметр db функции read_items.
Таким образом, внедрение зависимостей в FastAPI упрощает управление ресурсами, повышает тестируемость и модульность кода.