Introdução
Como você já deve saber, sistemas geralmente têm entrada e saída de dados (Input/Output). Esses dados de entradas são armazenados em alguma base de dados existente. Portanto, esses dados precisam ser controlados e validados para manter a consistência de sua aplicação.
Por exemplo, se temos um campo de CPF (11 dígitos fixos) não podemos deixar o usuário inserir em nossa base de dados um CPF que contém 8 ou 15 dígitos ou que ele consiga criar dois CPFs iguais.
Tipos de validações
No backend existem três níveis principais de validação e é importante entender a diferença entre os conceitos.
- Validação de Entrada (Camada de API/Controller)
- Validação de Negócio (Camada de Aplicação /Domain Service)\
- Validação de Consistência/Infraestrutura
Validação de Entrada (Camadas de API/Controller)
Ocorre logo no início da aplicação (entrada de dados) e o objetivo é garantir que os dados cheguem válidos na camada de aplicação. É nessa camada que será realizado a validação posterior, de negócios. É aqui que o sistema valida a estrutura e o formato, mas nunca a lógica do negócio.
Exemplo: verificar se o CPF tem 11 dígitos, mas não se ele existe no banco.
Validação de Negócio (Camada da Aplicação/Domain Service)
Essa camada é posterior a validação de entrada. Caso todas as informações fornecidas no input da aplicação esteja correta, passamos para a fase da validação de negócio, seu objetivo é garantir que a ação faça sentido pra o sistema.
Exemplos:
- Não permitir criar um boleto para um cliente bloqueado.
- Impedir alteração de uma remessa já enviada.
- Garantir unicidade de um registro lógico (ex: CPF de uma pessoa).
Validação de Consistência/Infraestrutura
Essa é a última etapa de validação e a mais crucial. O objetivo é proteger o sistema e o banco de dados de inconsistências estruturais. Ocorre na camada de repository e banco de dados.
Exemplos:
- Chaves únicas (
UNIQUE,PRIMARY KEY). - Relacionamentos (
FOREIGN KEY). - Restrições de tipo (
CHECK,NOT NULL).
Vizualização de fluxo
Cliente
↓
Controller
[ Validação de Entrada ]
↓
Application Service
[ Validação de Negócio ]
↓
Domain
↓
Repository
[ Validação de Consistência ]
↓
Banco de Dados
Top comments (0)