JsonValidation#

Действие JsonValidation предназначено для валидации сообщения по JSON схеме.

Параметры:

Название

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

Допустимые значения

Описание

validation_schema

+

Элемент вида {type: file, path: путь}

Обязательный параметр, описывающий относительный путь к схеме валидации от каталога ресурсов профиля, задается в виде: {type: file, path: путь}

action

-

deny/ignore

Определяет реакцию на несоответствие схеме валидации: deny - блокировка; ignore - пропуск. По умолчанию - deny.

allow_primitives_in_root

-

true/false

Параметр дает возможность передавать примитивы (integer/string/boolean/nullи т.п.) в корне json. В случае «false» разрешено передавать только JSONObject/JSONArray в корне json. По умолчанию - false.

trailing_garbage_policy

-

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

Определяет, допускается ли использование каких-либо символов после json сообщения.
Используется в случае: validator_xsd is not None. По умолчанию - standard.

allow_empty_body

-

true/false

Указывает, нужно ли разрешать пустые тела или нет.

Пример:

chains:
  request_chains:
    - actions:
      - action: JsonValidation
        conditions:
          - {var: $request_method, operator: '=', val: 'POST'}
        params:
          validation_schema: {type: file, path: schemes/request_post.json}
      - action: JsonValidation
        conditions:
          - {var: $request_method, operator: '=', val: 'PUT'}
        params:
          validation_schema: {type: file, path: schemes/request_put.json}
      message: $clj_request_body
  response_chains:
    - actions:
      - action: JsonValidation
        conditions:
        - {var: $request_method, operator: '=', val: 'POST'}
        params:
          validation_schema: {type: file, path: schemes/response_post.json}
      - action: JsonValidation
        conditions:
          - {var: $request_method, operator: '=', val: 'PUT'}
        params:
          validation_schema: {type: file, path: schemes/response_put.json}
      message: $clj_response_body 

В приведенном примере валидация осуществляется для запросов с методами POST и PUT по соответствующим схемам для инициирующего сообщения clj_request_body и для тех же методов, для тела ответа, заданного переменной clj_response_body. Обратите внимание, что запросы/ответы с другими отправленными/полученными методами в текущей конфигурации игнорируются. Если нужно предпринимать какие-либо действия, то необходимо либо определять действия ConditionChecker для блокировки таких запросов/ответов, либо другие проверяющие действия.

Заполняемые переменные#

По результатам своего выполнения, действие JsonValidation может заполнять следующие переменные:

  • clj_validation_schema -путь к схеме валидации, которая применялась для проверки;

  • clj_validation_error_text - сериализованный объект со списком ошибок в base64;

  • clj_validation_error_code - код ошибки;

  • clj_validation_error_description - расшифровка кода ошибки;

  • clj_validation_error_description_ext - подробное описание ошибок.