Точки расширения#

Расширение Eazy SDK подключается к владельцу конкретного решения. Оно не заменяет исполнитель и не добавляет параллельный конвейер (eazy_sdk.ext).

        flowchart TD
    Contract["Контракт операции"] --> Codecs["ScalarCodec / BodyCodec"]
    Contract --> Signing["CustomRequestSigner"]
    Response["Ответ"] --> Parser["ResponseParser / Extractor"]
    Prepared["PreparedRequest"] --> Handler["Zapros handler"]
    Requirements["Требования транспорта"] --> Profile["HandlerProfile"]
    Profile --> Validate["Проверка до отправки"]
    Codecs --> Executor["Единый исполнитель"]
    Signing --> Executor
    Parser --> Executor
    Handler --> Executor
    

Как выбрать границу#

Требуется

Контракт

Модуль

Кодировать одно значение или тело

ScalarCodec, BodyCodec

eazy_sdk.codecs

Извлечь данные из ответа

ResponseExtractor

eazy_sdk.response.cases

Полностью разобрать ответ

ResponseParser

eazy_sdk.response.cases

Построить нестандартную подпись

CustomCanonicalizer, CustomRequestSigner

eazy_sdk.request.signatures

Ограничить область применения

RequestScope

eazy_sdk.core

Отправить запрос другим HTTP-клиентом

Zapros handler и HandlerProfile

eazy_sdk.handlers.profile

HandlerProfile сообщает наблюдаемые возможности транспорта: протокол, точность адреса, заголовки, готовые байты тела, cookies и перенаправления. Исполнитель сравнивает профиль с требованиями операции до отправки и перечисляет все несовпадения в CapabilityMismatchError (validate_profile).

Порядок стадий запроса расширять нельзя. Новый кодек, проекция, конверт, шифрование или подпись работают внутри уже объявленной стадии REQUEST_PIPELINE (eazy_sdk.request.pipeline).

Дальше#