O Validator tem a função de analisar um JSON de entrada e compará-lo ao schema fornecido, para que seja criada uma validação dentro de seu pipeline e interrompa o fluxo se a estrutura não estiver de acordo com o declarado.
JSON Schema é um vocabulário bastante difundido no mercado, que permite validar documentos JSON. Para saber mais sobre esse vocabulário, clique aqui.
Dê uma olhada nos parâmetro de configuração do Validator:
JSON Schema: definição JSON Schema que valida o JSON
Fluxo de mensagens
Entrada
O componente aceita mensagens de entrada do tipo JSON para realizar a validação.
{
"data": [
{
"product": "Samsung 4k Q60T 55",
"price": 3278.99
},
{
"product": "Samsung galaxy S20 128GB",
"price": 3698.99
}
]
}
Saída
O componente não altera nenhuma informação da mensagem de entrada quando o JSON Validador estiver de acordo com JSON Schema. Portanto, a mensagem é retornada para o componente seguinte ou é utilizada como resposta final se esse componente for o último passo do pipeline.
{
"data": [
{
"product": "Samsung 4k Q60T 55",
"price": 3278.99
},
{
"product": "Samsung galaxy S20 128GB",
"price": 3698.99
}
]
}
Validator em Ação
Veja abaixo como o componente se comporta em determinada situação e a sua respectiva configuração.
Informando um schema e enviando um JSON que não atende aos requisitos
Configure o componente com o seguinte schema:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"name": {
"type": "string"
},
"price": {
"type": "number"
}
},
"required": [
"name",
"price"
]
}
Depois, envie o seguinte JSON para o componente:
Entrada
{
"name": "Samsung galaxy S20 128GB",
"price": 3698.99
}
Saída
{
"timestamp": 1614186691087,
"error": "Failed to validate message. #Validation: error: object has missing required properties ([\"product\"])\n level: \"error\"\n schema: {\"loadingURI\":\"#\",\"pointer\":\"\"}\n instance: {\"pointer\":\"\"}\n domain: \"validation\"\n keyword: \"required\"\n required: [\"price\",\"product\"]\n missing: [\"product\"]\n",
"code": 400
}
Informando um schema e enviando um JSON que atende aos requisitos
Configure o componente com o seguinte schema:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"data": {
"type": "array",
"items": [
{
"type": "object",
"properties": {
"product": {
"type": "string"
},
"price": {
"type": "number"
}
},
"required": [
"product",
"price"
]
},
{
"type": "object",
"properties": {
"product": {
"type": "string"
},
"price": {
"type": "number"
}
},
"required": [
"product",
"price"
]
}
]
}
},
"required": [
"data"
]
}
Depois, envie o seguinte JSON para o componente:
Entrada
{
"product": "Samsung galaxy S20 128GB",
"price": 3698.99
}
Saída
{
"product": "Samsung galaxy S20 128GB",
"price": 3698.99
}