SAF JSONSchema — это плагин для SmartApp Framework, который позволяет валидировать входящие и исходящие сообщение по JSON-Schema файлам, а также предоставляет стандартный набор схем.
Установка плагина
Напишите на developer@sberdevices.ru и запросите плагин SAF JSONSchema.
Новые возможности
Сущности, которые предоставляет плагин:
- Класс 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 с нестандартными схемами.