Использование вложенных зависимостей
Существуют некоторые сценарии, когда зависимые объекты также зависят от других зависимостей. Когда мы внедряем зависимость функции в другую функцию, зависимость класса в другой класс, цель состоит в том, чтобы построить вложенные зависимости. Они могут быть такими глубокими, какими вам нужно.
Давайте в файл main.py добавим следующий код:
from starlette.requests import Request
async def sub_dependency(request: Request) -> str:
return request.method
async def main_dependency(sub_dependency_value: str = Depends(sub_dependency)) -> str:
return sub_dependency_value
@app.get("/test/")
def test_endpoint(test: str = Depends(main_dependency)):
return test
Как мы видим наша тестовая конечная точка зависит от функции main_dependency, которая зависит от sub_dependency, она в свою очередь возвращает тип запроса(request.method)
И теперь если мы запустим сервер и попробуем отправить GET запрос в Test Endpoint, то увидим следующий результат:
Что означает что вся цепочка зависимостей была исполнена, мы получили ответ в виде типа нашего запроса.