FastAPI: Depends реализует механизм внедрения зависимостей В параметр передаётся: вызываемая функция или класс Тип параметра: объект с call (callable) — callable в Python FastAPI использует его, чтобы автоматически разрешать зависимости функций на основе их сигнатур Механизм применяется для декларативного задания зависимостей в обработчиках запросов Допустимы обычные функции, async-функции и классы с методом call При вызове эндпоинтов через introspection выполняется инъекция аргументов
Что можно передать в Depends() в FastAPI и каким объектом это является в Python?
FastAPI: Depends реализует механизм внедрения зависимостей В параметр передаётся: вызываемая функция или класс Тип параметра: объект с call (callable) — callable в Python FastAPI использует его, чтобы автоматически…
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Что можно передать в Depends() в FastAPI и каким объектом это является в Python?
- FastAPI: Depends реализует механизм внедрения зависимостей
- В параметр передаётся: вызываемая функция или класс
- Тип параметра: объект с
__call__(callable) — callable в Python - FastAPI использует его, чтобы автоматически разрешать зависимости функций на основе их сигнатур
- Механизм применяется для декларативного задания зависимостей в обработчиках запросов
- Допустимы обычные функции, async-функции и классы с методом
__call__ - При вызове эндпоинтов через introspection выполняется инъекция аргументов
Итог: Depends() получает callable (вызываемый объект), который FastAPI вызывает, чтобы получить значение зависимости.
Подробный ответ
Основной ответ
В FastAPI функция Depends() получает параметр в виде callable-объекта — чаще всего функции или класса, используемых для внедрения зависимостей (dependency injection). В терминах Python это любой объект, доступный для вызова: он реализует протокол __call__ и работает подобно функции.
Ключевые моменты
- В
Depends()обычно указывают функцию или класс, который FastAPI вызывает во время обработки запроса для разрешения зависимости. - С точки зрения Python это callable: обычная функция, метод или, например, класс, создающий экземпляр посредством
__call__. - Используя аннотации и типизацию, FastAPI автоматически вызывает этот объект и передаёт ему необходимые параметры — например, параметры запроса, body или другие зависимости.
Depends()представляет собой не статическое значение, а динамический механизм: во время runtime он добавляет в маршрут вызов callable и формирует цепочку зависимостей.
Практический контекст
В прикладных проектах через Depends() подключают сервисы, базы данных, авторизацию, session и любые объекты, которые требуется переиспользовать. К примеру, функция get_current_user может быть callable с собственными аргументами и логикой, а Depends(get_current_user) выполнит её и передаст результат в endpoint. Такой декларативный подход позволяет управлять зависимостями без явного вызова в каждом маршруте.