--- title: Передать зависимость запроса description: Добавьте device, tenant или другое значение приложения без аргумента каждого метода. sources: - eazy_sdk.dependencies draft: false api_fingerprint: "sha256:d16f02296e2945f13e1a01992fb71aab78a13b112aa90eb978b39ddfa83cd3b2" --- Зависимость подходит для значения, которым владеет приложение, а не вызывающий код. Автор SDK объявляет тип и назначение, приложение регистрирует provider, а runtime разрешает значение перед подготовкой запроса. ```{literalinclude} ../../../../../examples/docs/dependencies.py :language: python :start-after: "# region docs: dependencies" :end-before: "# endregion docs: dependencies" ``` `DEVICE` выбирает поле `id` результата и пишет его в объявленный `X-Device-Id`. Поле операции имеет `UNSET` по умолчанию, поэтому provider заполняет его только тогда, когда вызывающий не передал значение сам. `DependencyRegistry` принадлежит `Identity` и обслуживает все роутеры корня. Отсутствующий обязательный provider останавливает вызов до сети. :::{dropdown} Файл целиком ```{literalinclude} ../../../../../examples/docs/dependencies.py :language: python ``` ::: ```text device: device-7 ``` ## Выбрать способ применения | Способ | Когда использовать | |---|---| | `Inject(...)` | Значение целиком занимает новый header, query, cookie или поле тела | | `requires=` с `apply=` | Значение заполняет уже объявленный слот операции | | `requires=` с `BodyProjection` | Значение нужно внутри private wire-документа | ## Выбрать срок кэша | Политика | Когда provider вызывается снова | |---|---| | `NONE` | При каждом обращении к зависимости | | `CLIENT` | После создания нового роутера | | `CALL` | Для нового логического вызова | | `ATTEMPT` | Для каждой попытки, включая retry и redirect | Nonce и timestamp обычно требуют `ATTEMPT`, а неизменяемый device context можно хранить с `CLIENT`. Маркер `secret=True` скрывает значение из диагностики. :::{note} Access token относится к авторизации, captcha к защите, а ключ HMAC к `key_provider`. У этих значений другой жизненный цикл, поэтому не оформляйте их как обычные зависимости. ::: ## Дальше - {doc}`Построить private wire-представление ` - {doc}`Подписать запрос ` - {doc}`Справочник зависимостей `