Pouvez-vous expliquer le principe d'injection de dépendances dans FastAPI et comment il est réalisé dans ce framework?
Réponse de l'IA
sobes.tech IA
В 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 упрощает управление ресурсами, повышает тестируемость и модульность кода.