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-07/schema",
"$id": "http://example.com/example.json",
"type": "object",
"default": {},
"examples": [
{
"product": "Product name",
"price": 1.11
}
],
"required": [
"product",
"price"
],
"properties": {
"product": {
"$id": "#/properties/product",
"type": "string",
"default": ""
},
"price": {
"$id": "#/properties/price",
"type": "number",
"default": 0.0
}
},
"additionalProperties": true
}

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-07/schema",
"$id": "http://example.com/example.json",
"type": "object",
"default": {},
"examples": [
{
"product": "Product name",
"price": 1.11
}
],
"required": [
"product",
"price"
],
"properties": {
"product": {
"$id": "#/properties/product",
"type": "string",
"default": ""
},
"price": {
"$id": "#/properties/price",
"type": "number",
"default": 0.0
}
},
"additionalProperties": true
}

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
}
Encontrou sua resposta?