Путь запроса#

Что происходит после вызова метода?

Вызов метода роутера проходит один и тот же путь в синхронном и асинхронном клиентах. Дескриптор связывает аргументы, а компилятор заранее проверяет контракт операции (eazy_sdk.api, eazy_sdk.compile.http_compiler).

        flowchart TD
    Call["Вызов метода"] --> Bind["Связать аргументы"]
    Bind --> Plan["Получить скомпилированный контракт"]
    Plan --> Values["Авторизация, зависимости, защиты"]
    Values --> Attempt["Собрать текущую попытку"]
    Attempt --> Pipeline["Конвейер представления"]
    Pipeline --> Send["Отправить через handler"]
    Send --> Normalize["Нормализовать ответ"]
    Normalize --> Cases["Выбрать response case"]
    Cases --> Result["Значение или типизированная ошибка"]
    

Порядок представления тела#

REQUEST_PIPELINE объявлен один раз и содержит шесть фиксированных стадий (eazy_sdk.request.pipeline):

  1. Проекция публичной модели в модель представления.

  2. Конверт протокола.

  3. Шифрование выбранных полей документа.

  4. Кодирование документа в байты.

  5. Шифрование готовых байтов.

  6. Подпись окончательного запроса.

Подпись всегда последняя, поэтому она читает именно те байты, которые уйдут в транспорт. Набор стадий закрыт; операция может пропустить неприменимую стадию, но не добавить новый вид стадии (eazy_sdk.request.pipeline).

ExecutionCore выполняет объявленный порядок, а _AttemptRun хранит данные одной попытки. Обработчик получает уже подготовленный запрос и возвращает нормализованный ответ (eazy_sdk.clients.executor).

После транспорта Responses.inspect(...) сопоставляет ответ с декларациями операции. Ответ со статусом перехода исполнитель ведёт сам, если операция не объявила на этот статус вариант. Обычный вызов разворачивает результат, а .with_response(...) добавляет исходный нормализованный ответ без второго сетевого пути (eazy_sdk.response.cases).

Дальше#