Sobes.tech
Назад к вопросам
Junior — Middle
48

Можешь привести пример, когда и как используется директива 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 позволяет инжектировать зависимости в функции и маршруты.
  • Упрощает повторное использование и тестирование кода.
  • Автоматически обрабатывает вызов зависимостей и передачу результатов.
  • Используется для авторизации, подключения к БД, валидации и других общих задач.
  • Позволяет строить чистую и модульную архитектуру приложения.