Валидация по JSON схеме (deprecated)#

Примечание

Данный механизм не рекомендован к использованию в SOWA. В качестве альтернативы рекомендуется использовать действие JsonValidation.

Валидация по JSON схеме представляет собой группу, содержащую в себе request и response параметры для валидации JSON сообщений. Использование request/response валидации по JSON схеме исключает возможность дополнительного подключения wsdl/xsd валидации.

Совместное использование валидаторов и цепочек: Данный механизм предполагает монопольное право на работу с контекстом запроса или ответа. В связи с этим, одновременная работа валидаторов (validators) и цепочек (chains) запрещена на уровне конфигурации, хотя и технически возможна в случае имплементации на разных фазах.

validator_json - параметры#

Название

Обязательность

Описание

Возможные значения

Значение по умолчанию

request

Опциональный

Параметры, используемые для валидации запроса по схеме

Параметры, описанные в разделе «validator_json - request»

—

response

Опциональный

Параметры, используемые для валидации ответа по схеме

Параметры, описанные в разделе «validator_json - response»

—

response_proc_options

Опциональный

Опции обработки ответа. Используется, если response задан

Параметры, описанные в разделе «validator_json - response_proc_options»

—

request_error_code

Опциональный

Код статуса, который вернется клиенту при некорректном запросе. Используется, если request задан

Целочисленное значение

403

request_error_message

Опциональный

Текст сообщения об ошибке, который вернется клиенту при некорректном запросе. Используется, если request задан

Текстовое значение

—

response_error_code

Опциональный

Код статуса, который вернется клиенту при некорректном ответе. Используется, если response задан

Целочисленное значение

403

response_error_message

Опциональный

Текст сообщения об ошибке, который вернется клиенту при некорректном ответе. Используется, если response задан

Текстовое значение

—

trailing_garbage_policy

Опциональный

Допускаются ли символы после JSON сообщения. Используется, если validator_xsd задан

weak — допускаются любые символы; standard — допускаются символы новой строки и переноса строк; strong — не допускаются никакие символы

standard

action_when_no_rule

Опциональный

Решение валидатора, если не обнаружено подходящего правила для валидации сообщения

deny — сообщение блокируется; ignore — сообщение пропускается

deny

validator_json - request#

Название

Обязательность

Описание

Возможные значения

Значение по умолчанию

schema

Обязательный

Путь к файлу схемы, с помощью которой происходит валидация

Строковое значение

—

default

Опциональный

Вкл./Откл. использование дефолтного правила, если другие правила валидации не могут быть использованы. Дефолтное правило не может быть использовано, если на вход приходит пустое тело запроса. Для дефолтного правила отсутствует возможность указания параметров url, method и params

true, false

false

url

Опциональный

Соотнесение схемы валидации JSON объекта и адрес, по которому был отправлен запрос. Возможность использования регулярного выражения. Используется, если default не задан или default: false

Строковое значение

—

method

Опциональный

Соотнесение схемы валидации JSON объекта и метод запроса. Используется, если default не задан или default: false

post, put, delete, patch

—

params

Опциональный

Условие для вызова валидатора при использовании параметров в запросе. Используется, если default не задан или default: false

Параметры, описанные в разделе «validator_json - params»

—

allow_empty_body

Опциональный

Разрешать ли пустые тела

true, false

—

allow_primitives_in_root

Опциональный

Возможность передавать примитивы (integer/string/boolean/null и т.п.) в корне json. В случае false разрешено передавать только JSONObject/JSONArray. Используется, если default не задан или default: false

true, false

false

transforms

Опциональный

Выполнение преобразований над телом запроса/ответа и последующая валидация результата. Доступен вариант: formdata to json

Последовательность строковых значений: PostFormDataToFlateJson

—

validator_json - response#

Название

Обязательность

Описание

Возможные значения

Значение по умолчанию

schema

Обязательный

Путь к файлу схемы, с помощью которой происходит валидация

Строковое значение

—

url

Опциональный

Соотнесение схемы валидации JSON объекта и адрес, по которому был получен ответ. Возможность использования регулярного выражения

Строковое значение

—

method

Опциональный

Соотнесение схемы валидации JSON объекта и метод запроса

post, put, delete, patch

—

params

Опциональный

Условие для вызова валидатора при использовании параметров в ответе

Параметры, описанные в разделе «validator_json - params»

—

allow_empty_body

Опциональный

Разрешать ли пустые тела

true, false

—

transforms

Опциональный

Выполнение преобразований над телом запроса/ответа и последующая валидация результата. Доступен вариант: formdata to json

Последовательность строковых значений: PostFormDataToFlateJson

—

response_code

Опциональный

Схема валидации применяется только для ответов, удовлетворяющих комбинации оператора и паттерна

Параметры, описанные в разделе «validator_json - response_code»

—

validator_json - params#

Название

Обязательность

Описание

Возможные значения

Значение по умолчанию

name

Обязательный

Имя аргумента

Текстовое значение

—

operator

Обязательный

Операция для аргумента

= — посимвольное равенство; != — посимвольное неравенство; ~ — регулярное выражение с учетом регистра; ~* — регулярное выражение без учета регистра; !~ — негативное регулярное выражение с учетом регистра; !~* — негативное регулярное выражение без учета регистра

—

pattern

Обязательный

Паттерн, применяемый к аргументу. Возможность использования регулярного выражения. Для использования символов `\ ^ $ .

? * + ( ) [ ] { } -в явном виде необходимо их экранирование. Символ` экранируется только тогда, когда находится в кавычках

Текстовое значение

validator_json - response_code#

Название

Обязательность

Описание

Возможные значения

Значение по умолчанию

operator

Обязательный

Операция для аргумента

= — посимвольное равенство; != — посимвольное неравенство; ~ — регулярное выражение с учетом регистра; ~* — регулярное выражение без учета регистра; !~ — негативное регулярное выражение с учетом регистра; !~* — негативное регулярное выражение без учета регистра

—

pattern

Обязательный

Паттерн, применяемый к статус коду ответа

Текстовое значение

—

validator_json - response_proc_options#

Название

Обязательность

Описание

Возможные значения

Значение по умолчанию

max_inmemory_size

Опциональный

Максимальный размер сообщения, который валидируется без буферизации в файл

Текстовое значение с суффиксом: число (байты), k/K (килобайты), m/M (мегабайты)

1M

Пример использования json-валидатора:

validators:
  validator_json:
    request:
      - schema: schemes/json/ABO/Banking.Products.Brokerage.TradeHistory.Get.POST.rq.v1.0.json
        url: ^\/brokerage-info-ib\/rest\/v1\.0\/ib\/Banking\/Product\/Brokerage\/TradeHistory\/Get$
        method: post
      - schema: schemes/json/ABO/Banking.Products.Brokerage.TradeHistory.Get.POST.rq.v2.0.json
        url: ^\/brokerage-info-ib\/rest\/v2\.0\/ib\/Banking\/Product\/Brokerage\/TradeHistory\/Get$
        method: post
    response:
      - schema: schemes/json/ABO/Banking.Products.Brokerage.TradeHistory.Get.POST.rs.v1.0.json
        response_code:
          operator: "!~"
          pattern: "(?:500|502|503|504)"
        url: ^\/brokerage-info-ib\/rest\/v1\.0\/ib\/Banking\/Product\/Brokerage\/TradeHistory\/Get$
        method: post
      - schema: schemes/json/ABO/Banking.Products.Brokerage.TradeHistory.Get.POST.rs.v2.0.json
        response_code:
          operator: "!~"
          pattern: "(?:500|502|503|504)"
        url: ^\/brokerage-info-ib\/rest\/v2\.0\/ib\/Banking\/Product\/Brokerage\/TradeHistory\/Get$
        method: post