Назад к вопросам
Junior — Middle
61
Объясните принцип внедрения зависимостей в FastAPI и его основные особенности
Компании, где спрашивали
Код Открытия
Ответ от нейросети
sobes.tech AI
В FastAPI внедрение зависимостей реализовано через механизм Dependency Injection, который позволяет автоматически передавать в обработчики (эндпоинты) необходимые объекты или значения.
Основные особенности:
- Используется функция
Depends, которая указывает FastAPI, что параметр нужно получить из зависимости. - Зависимости могут быть простыми функциями, которые возвращают нужный объект (например, подключение к базе, текущий пользователь).
- 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(Item).all()
return items
Здесь get_db — зависимость, которая создаёт сессию базы данных и передаёт её в эндпоинт. FastAPI заботится о вызове и управлении жизненным циклом этой зависимости.
Такой подход упрощает тестирование, повторное использование кода и делает архитектуру приложения более модульной.