--- title: Собрать SDK для нескольких сервисов description: Объявите адрес на роутере и измените сборку через bind(). sources: - eazy_sdk.SyncRoot - eazy_sdk.AsyncRoot - eazy_sdk.bind - eazy_sdk.Binding - eazy_sdk.api_group api_fingerprint: "sha256:fdfd3e03461fa2a302105337ecc2cc98c86b0a67936d08086d7e4aa284325cf6" --- Один корень, несколько адресов. Адрес сервиса является частью контракта роутера. Общий клиент может обслуживать разные hosts, сохраняя единые transport policy и состояние handler. ```{literalinclude} ../../../../../examples/docs/multi_service.py :language: python :start-after: "# region docs: multi-service" :end-before: "# endregion docs: multi-service" ``` `BooksApi` наследует адрес клиента. `CardsApi` получает адрес от `BillingService`, а `bind(...)` заменяет его для stage-сборки без изменения декларации API. :::{dropdown} Файл целиком ```{literalinclude} ../../../../../examples/docs/multi_service.py :language: python ``` ::: ```text book: SDK Patterns card: card-42 GET api.mail.example/books/7 POST stage-billing.mail.example/cards ``` ## Порядок выбора адреса | Приоритет | Источник | |---|---| | 1 | Абсолютный URL операции | | 2 | `base_url` из наиболее точного `bind(...)` | | 3 | `base_url` роутера или его миксина | | 4 | `base_url` клиента | Отдельный клиент нужен, когда сервису требуется другой proxy, TLS-профиль, handler, timeout или собственная guard-сессия. Передайте его через `bind(Router, client=...)`; в остальных случаях новый клиент только раздробит cookies, connection pool и управляемое состояние без пользы. Контрактные defaults роутера включают `security`, `signing`, `crypto`, `wire`, `errors` и `base_url`. Операция может заменить правила, а `security=None`, `signing=()` и `crypto=None` явно отключают соответствующее наследование. `Root(client)` не владеет переданным клиентом. `Root.from_handler(...)` создаёт и закрывает его сам, а клиент из `bind(..., client=...)` всегда остаётся во владении сборки. ## Дальше - {doc}`Собрать учебный SDK ` - {doc}`Передать общую Identity ` - {doc}`Выбрать HTTP-клиент `