Что такое Depends в FastAPI?
Depends – это механизм инъекции зависимостей внутри эндпоинтов в FastAPI. Конечный потребитель Depends – это всегда эндпоинт. Depends позволяет запускать цепочку функций, от которых зависит данный эндпоинт, например, аутентификация, получение сессии базы данных.
Depends в FastAPI — это специальный механизм для внедрения зависимостей (dependency injection). Он позволяет нам декларировать и управлять зависимостями, которые нужны для обработки запросов. Это полезно для реализации общих функций, таких как проверка аутентификации, подключение к базе данных или выполнение другой повторяющейся логики.
При создании эндпоинтов/ручек можно использовать Depends для внедрения зависимостей. Например, если у нас есть функция, которая проверяет аутентификацию пользователя, мы можем использовать ее в маршрутах с помощью Depends:
В этом примере функция verify_token используется в эндпоинте /users. Если токен невалидный, вызывается исключение HTTPException, и клиент получает ошибку.
Можно использовать классы как зависимости для управления состоянием или разделения логики:
Здесь класс CommonQueryParams инкапсулирует общие параметры запроса. Это позволяет нам избегать повторения кода и улучшает читаемость маршрутов. Например, если вы используете пагинацию, фильтрацию и сортировку на множестве эндпоинтов, вам достаточно использовать зависимость CommonQueryParams, чем прописывать все параметры каждый раз, нарушая принцип DRY.
Отметьте свой прогресс