Функция Depends
Функция Depends применяется в параметрах обработчика маршрута
и указывает FastAPI, что значение этого параметра нужно получить
путём вызова другой функции. Первым параметром передаётся сама
функция-зависимость. FastAPI вызывает её перед обработчиком,
разрешает вложенные зависимости и подставляет результат.
Если функция-зависимость возвращает словарь, его можно
распаковать через параметр **.
При необходимости можно передать второй параметр use_cache,
управляющий кешированием результата в пределах одного запроса.
Синтаксис
Depends(dependency, use_cache=True)
Пример
Давайте объявим простую зависимость и внедрим её в обработчик:
from fastapi import FastAPI, Depends
app = FastAPI()
def get_user() -> str:
return 'abcde'
@app.get('/user')
def user(name: str = Depends(get_user)):
return {'name': name}
Результат выполнения кода для адреса /user:
{"name": "abcde"}
Пример
Давайте вернём из зависимости словарь и распакуем его через двойную звёздочку:
from fastapi import FastAPI, Depends
app = FastAPI()
def get_user() -> dict:
return {'name': 'abcde', 'role': 'admin'}
@app.get('/user')
def user(data: dict = Depends(get_user)):
return data
Результат выполнения кода для адреса /user:
{"name": "abcde", "role": "admin"}
Пример
Давайте построим цепочку зависимостей, где одна зависит от другой:
from fastapi import FastAPI, Depends
app = FastAPI()
def get_token() -> str:
return 'secret-token'
def get_user(token: str = Depends(get_token)) -> dict:
return {'token': token, 'name': 'abcde'}
@app.get('/user')
def user(data: dict = Depends(get_user)):
return data
Результат выполнения кода для адреса /user:
{"token": "secret-token", "name": "abcde"}
Пример
Давайте отключим кеширование через параметр use_cache,
чтобы зависимость вызывалась при каждом обращении:
Результат выполнения кода для адреса /counter:
{"first": 1, "second": 1}
Смотрите также
-
функция
Security,
которая объявляет зависимость с учётом областей доступа -
класс
OAuth2PasswordBearer,
который извлекает токен из заголовка Authorization -
класс
HTTPBasic,
который реализует базовую HTTP-аутентификацию -
класс
HTTPBasicCredentials,
который хранит логин и пароль пользователя