Плагин SAF JsonSchema


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 с нестандартными схемами.

Заметили ошибку?

Выделите текст и нажмите Ctrl + Enter, чтобы сообщить нам о ней