SAF JSONSchema — это плагин для SmartApp Framework который позволяет валидировать входящие и исходящие сообщение по JSON-Schema файлам, а также предоставляет стандартный набор схем.
Установить плагин можно из git.
python -m pip install git+https://github.com/sberdevices/saf_jsonschema@mainПлагин предоставляет следующие сущности:
- Класс
SchemaStaticResolver, который позволяет подгрузить набор взаимосвязанных схем и валидировать объекты по ним. Внутри используется библиотекаjsonschema, которая предоставляет классRefResolver, над ним добавлена подгрузка схем из файлов и возможность проверки объектов с разными схемами. При этом, поддерживаются файлы схем не только в формате JSON, но и YAML. - Объект
default_static_resolver– экземпляр классаSchemaStaticResolverсо стандартными схемами, из которых самая актуальная для смартапов –ANSWER_TO_USER. - Класс
ByNameMessageValidator– наследник классаcore.message.msg_validator.MessageValidator, может использоваться как готовый валидатор в конфиге смартапа.
С помощью ByNameMessageValidator можно легко добавить валидацию исходящих сообщений прописав
в конфиг следующую пару строк:
from saf_jsonschema import ByNameMessageValidator
TO_MSG_VALIDATORS = (ByNameMessageValidator(name="AppAnswer"),)Помимо этого, объекты класса ByNameMessageValidator легко расширяются:
- Можно использовать стандартные схемы, но переопределить стандартный маппинг
имён сообщений к схемам используя словарик
name_to_schema, а также отключить использование стандартного маппинга флагоdirect_pass. Либо отнаследовать класс и переопределить метод_get_schema_by_message. - Можно передать собственный объект
SchemaStaticResolverс нестандартными схемами.
C вопросами и предложениями пишите нам по адресу developer@sberdevices.ru или вступайте в наш Telegram канал - SmartMarket Community.