Можешь привести пример, когда и как используется директива Depends в практике разработки?
Ответ от нейросети
sobes.tech AI
Что хотят услышать интервьюеры:
Depends используется для внедрения зависимостей в функции или маршруты, что позволяет удобно управлять повторно используемыми компонентами, например, подключением к базе данных или проверкой авторизации. Это упрощает тестирование и повышает модульность кода.
Определение:
Depends — это механизм в FastAPI, который позволяет объявлять зависимости для функций, автоматически вызывая и передавая результаты в целевую функцию. Это облегчает повторное использование кода и управление зависимостями.
Пример использования:
from fastapi import Depends, FastAPI
app = FastAPI()
def get_token_header(token: str):
if token != "secret-token":
raise HTTPException(status_code=400, detail="Invalid Token")
return token
@app.get("/items/")
def read_items(token: str = Depends(get_token_header)):
return {"token": token}
Пояснение кода:
В примере функция get_token_header проверяет токен, переданный в запросе. В маршруте /items/ она указывается как зависимость через Depends. FastAPI автоматически вызывает get_token_header, передает результат в параметр token функции read_items. Если токен неверный, вызывается исключение, и основной обработчик не выполняется.
Ключевые моменты:
- Depends позволяет инжектировать зависимости в функции и маршруты.
- Упрощает повторное использование и тестирование кода.
- Автоматически обрабатывает вызов зависимостей и передачу результатов.
- Используется для авторизации, подключения к БД, валидации и других общих задач.
- Позволяет строить чистую и модульную архитектуру приложения.