В современном мире OpenAPI (Swagger) является стандартом для описания RESTful API. Данная подсистема позволит вам проверять входящие и исходящие пакеты данных на соответствие контракту OpenAPI.
Для установки необходимо:
- Скачать последнюю версию подсистемы из раздела releases
- Сравнить/объединить полученные файлы с вашим проектом.
Тут все максимально просто.
Вызываем метод ВалидаторПакетов.Валидировать
с параметрами:
- МодельДанных - Строка, Число, Массив, Структура, Соответствие - Это ваш пакет, который вы хотите валидировать.
- ИмяСхемы - Строка - Имя схемы данных по которой вы хотите валидировать модель.
- Спецификация - Строка - Спецификация OpenAPI 3.0 в формате JSON.
Метод вернет массив с ошибками валидации. Если ошибок нет, то метод вернет пустой массив.
Как это выглядит в коде:
СхемаOpenApi = "{
|""openapi"": ""3.0.0"",
|""info"": {
| ""title"": ""Example"",
| ""version"": ""1.0.0""
|},
|""paths"": {}
|""components"": {
| ""schemas"": {
| ""complex_object"": {
| ""type"": ""object"",
| ""properties"": {
| ""name"": {
| ""type"": ""string"",
| ""minLength"": 3,
| ""maxLength"": 10
| },
| ""age"": {
| ""type"": ""integer"",
| ""minimum"": 18,
| ""maximum"": 100
| }
| },
| ""additionalProperties"": false,
| ""required"": [""name"", ""age""]
| }
| }
|}";
МодельДанных = Новый Структура("name, age", "John", 30);
МассивОшибок = ВалидаторПакетов.Валидировать(МодельДанных, "complex_object", СхемаOpenApi);
Если МассивОшибок.количество() = 0 Тогда
Сообщить("Валидация прошла успешно!");
Возврат;
КонецЕсли;
Для каждого Ошибка Из МассивОшибок Цикл
Сообщить(Ошибка,СтатусСообщения.Внимание);
КонецЦикла;
В конфигурации есть пример использования подсистемы. Посмотрите обработку ПримерРаботыВалидатора
.
Реализована валидация строк по следующим правилам:
- minLength
- maxLength
- pattern
- format
- date
- Валидацию пройдет как строка в нужном формате, так и дата.
- date-time
- Валидацию пройдет как строка в нужном формате, так и дата.
- hostname
- ipv4
- ipv6
- uri
- uuid
- Валидацию пройдет как строка в нужном формате, так и УникальныйИдентификатор.
- binary
- byte
- enum
- date
Реализована валидация чисел по следующим правилам:
- minimum
- maximum
- exclusiveMinimum
- exclusiveMaximum
- multipleOf
- format
- int32
- int64
- float
- double
Реализована валидация массивов по следующим правилам:
- items
- minItems
- maxItems
- uniqueItems
Реализована валидация объектов по следующим правилам:
- maxProperties
- minProperties
- required
- additionalProperties
- nullable
- $ref
- deprecated
- readOnly
- writeOnly
- oneOf
- anyOf
- allOf
- not
- Добавить возможность валидации по URL спецификации.
- Добавить обработку конструкций
allOf
,anyOf
,oneOf
,not
. - Добавить поддержку свойства
format
для числовых типов. - Добавить валидацию формата
binary
для строк. - Добавить поддержку свойств
readOnly
,writeOnly
. - Добавить поддержку свойства
deprecated
. - Добавить поддержку OpenAPI 3.1.
- Ознакомьтесь с процессом разработки
- Поддержите проект звездой
- Основная идея и большая часть решений была позаимствована из проекта swaggerDataValidation1C
- Создателям YaXunit - за лучший фреймворк для юнит-тестирования в 1С.
- Создателям jenkins-lib - за удобство и простоту в создании CI.