Валидация сообщений по схеме#
Поддерживается валидация следующих типов сообщений: JSON, XML и AVRO.
Шаг предназначен для проверки входящих/исходящих сообщений на соответствие указанных схем, либо форматов.
JSON#
Документация#
Пример#
Пример JSON-валидации входящего и исходящего сообщения (in=out)
{
flow: {
name: "JobName"
source: ${source}
}
source: {
name: "testInput"
type: "test"
topic: "input"
config: ${test} # описан в предыдущем блоке test
destination: ${transformStep}
}
validator: {
name: "Json validator"
type: "dsl"
dsl: {
path: "AsIs.tr"
}
format: {
input: {
type: "json",
schema: [
{
source: "file"
path: "testSchema/json/first-schema.json"
},
//...
]
}
output: {
type: "json",
schema: [
{
source: "file"
path: "testSchema/json/first-schema.json"
},
//...
]
}
}
destination: ${destination}
destination: {
name: "output"
type: "destination"
topic: "output"
config: ${defaults.kafka}
}
}
}
XSD#
Документация#
Пример#
Пример XSD-валидации входящего и исходящего сообщения (in=out)
validator: {
name: "XML validator"
type: "dsl"
dsl: {
path: "AsIs.tr"
}
format: {
input: {
type: "xml",
schema: [
{
source: "file"
path: "testSchema/xml/main.xsd"
},
//...
]
}
output: {
type: "xml",
schema: [
{
source: "file"
path: "testSchema/xml/main.xsd"
},
//...
]
}
}
destination: ${output}
}
AVRO#
Поддерживается работа с многофайловыми схемами валидации.
Документация#
Пример:
Пример AVRO-валидации входящего и исходящего сообщения (in=out):
transformStep: {
name: "transformation"
type: "dsl"
format: {
input: json
output: {
type: "avro"
schema: [{
path: "avro/ValidTest.avsc"
}]
}
}
dsl: {
path: "AsIs.tr"
}
destination: ${destination}
}
Валидация сообщений по схеме в формате Base64#
При валидации входящего и исходящего сообщения можно использовать схемы в формате Base64. Схемы указываются закодированной строкой в поле, которое может быть либо path, либо value.
Поле path переименовано в value (предусмотрена возможность работы с полем path для сохранения обратной совместимости для значений поля «source»: «classpath» и «file»).
Пример блока трансформации в конфигурации:
validator: {
name: "Base64 validator"
type: "dsl"
dsl: {
source: "base64"
value: "b3V0LmV2ZW50ID0gaW4uZXZlbnQK"
}
format: {
input: {
type: "json"
schema: [{
source: "base64"
value: "eyJ0eXBlIjogIm9iamVjdCIsInByb3BlcnRpZXMiOiB7InRpdGxlIjogeyJ0eXBlIjogInN0cmluZyJ9fX0="
},
...]
}
output: {
type: "avro"
schema: [
{
source: "base64"
value: "eyJ0eXBlIjogIm9iamVjdCIsInByb3BlcnRpZXMiOiB7InRpdGxlIjogeyJ0eXBlIjogInN0cmluZyJ9fX0="
},
...
]
}
}
destination: ${output}
}