Что такое внедрение зависимостей (Dependency Injection) в FastAPI?
Вопрос проверяет знание системы управления зависимостями в FastAPI и ее роли в упрощении повторного использования компонентов.
Короткий ответ
Dependency Injection в FastAPI — это механизм, который позволяет передавать зависимости (например, функции, объекты, настройки) в обработчики маршрутов. Это упрощает управление кодом и повышает его тестируемость.
Длинный ответ
Dependency Injection (DI) в FastAPI позволяет легко организовывать и управлять зависимостями. Например, если обработчику требуется доступ к базе данных, API-клиенту или настройкам, вы можете определить зависимости и передать их в функции маршрутов.
FastAPI предоставляет специальный объект Depends, который сообщает фреймворку, что для данной функции необходима зависимость. Зависимость может быть определена как функция, которая возвращает требуемый объект.
Пример:
from fastapi import FastAPI, Depends
app = FastAPI()
def common_dependency():
return {"key": "value"}
@app.get("/items/")
def read_items(data=Depends(common_dependency)):
return {"data": data}В данном примере функция common_dependency передается как зависимость в обработчик маршрута. Это позволяет разделять логику приложения на независимые компоненты.
Когда использовать:
- Dependency Injection полезна для управления конфигурацией, подключениями к базам данных, авторизацией и другими повторяющимися задачами.