Sobes.tech
Back to questions
Junior — Middle
76

Можете объяснить, что означает директива Depends в FastAPI и как она используется для внедрения зависимостей?

Answer from AI

sobes.tech AI

В FastAPI директива Depends используется для внедрения зависимостей — это способ передать в обработчик запроса дополнительные объекты или функции, которые нужны для работы, например, подключение к базе данных, проверка пользователя или получение параметров.

Когда вы используете Depends, FastAPI автоматически вызывает функцию или класс, указанный в Depends, и передает результат в ваш маршрут. Это упрощает повторное использование кода и делает его более модульным.

Пример:

from fastapi import FastAPI, Depends

app = FastAPI()

def get_token_header(token: str):
    if token != "expected_token":
        raise HTTPException(status_code=400, detail="Invalid Token")
    return token

@app.get("/items/")
async def read_items(token: str = Depends(get_token_header)):
    return {"token": token}

Здесь get_token_header — зависимость, которая проверяет токен, а в маршруте она внедряется через Depends. FastAPI сам вызовет get_token_header и передаст результат в параметр token.