OpenApiValidation#

Действие OpenApiValidation предназначено для валидации запроса/ответа по спецификации Swagger v2 или OpenAPI v3.

В качестве валидатора OpenApi на SOWA используется библиотека swagger-request-validator.

Параметры:

Название

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

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

Описание

validation_schema

+

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

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

Рассмотрим пример:

- id: openapi_validation
  name: openapi.validation
  url: ^\/public\/request\/
  allowed_queries:
    - method: post
    - method: get
    - method: put
  chains:
    request_chains:
      - actions:
        - action: OpenApiValidation
          params:
            validation_schema: {type: file, path: schemes/OPENAPI/deposits-api.yaml}
        message: $clj_request_body
    response_chains:
      - actions:
        - action: OpenApiValidation
          params:
            validation_schema: {type: file, path: schemes/OPENAPI/deposits-api.yaml}
        message: $clj_response_body

В приведенном примере валидация осуществляется для запросов и ответов по OpenAPI спецификации deposits-api.yaml, расположенной в каталоге schemes/OPENAPI/.

Значение параметра url, объявленного у сервиса, должно включать в себя подмножество «paths», объявленных в openapi-схеме.

Например, в openapi-схеме описаны следующие paths:

/foo/bar/baz

/foo/baz/bar

/foo/foo/bar

Тогда в сервисе должен быть объявлен url, который включает в себя весь перечень описанных «paths» из openapi-схемы, в данном случае /foo.

В секции allowed queries необходимо указывать методы, разрешенные в OpenAPI спецификации.

Стоит учитывать, что если в секции response не указана схема валидации, то тело ответа будет отсутствовать.

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

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

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

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

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