Endpoint: Validação
O que é Validação de Dados?
A validação é o processo de garantir que os dados recebidos por uma aplicação estejam corretos, completos e seguros antes de serem processados ou armazenados. Em APIs, especialmente RESTful, esse processo protege contra entradas inválidas, ataques e falhas no sistema.
Validações podem ser aplicadas tanto no cliente (frontend) quanto no servidor (backend). Embora validações no frontend melhorem a experiência do usuário, é imprescindível que o backend valide todos os dados recebidos, garantindo segurança e integridade.
Por que a Validação é Importante?
- Segurança: previne ataques como injeção de SQL ou execução de código malicioso.
- Consistência: mantém integridade dos dados.
- Melhora a experiência do usuário: com feedbacks claros sobre erros de entrada.
- Evita erros internos: ao garantir que os dados estejam no formato esperado.
- Compliance: atende requisitos de regulamentações como LGPD ou GDPR ao evitar entrada de dados sensíveis não conformes.
Tipos de Validação
- Validação de formato: verifica padrões como e-mails, CPFs, números, etc.
- Validação de presença: garante que campos obrigatórios estejam preenchidos.
- Validação de tipo: confirma se um campo é string, número, booleano, etc.
- Validação de valor: aplica limites (ex: idade entre 18 e 60).
- Validação de unicidade: impede dados duplicados (ex: e-mails já cadastrados).
- Validação cruzada: compara valores entre dois ou mais campos (ex: confirmar senha).
Exemplo em Node.js com Express e Joi
const express = require('express');
const Joi = require('joi');
const app = express();
app.use(express.json());
const schemaUsuario = Joi.object({
nome: Joi.string().min(3).required(),
email: Joi.string().email().required(),
idade: Joi.number().integer().min(18).max(60).required()
});
app.post('/usuarios', (req, res) => {
const { error } = schemaUsuario.validate(req.body);
if (error) return res.status(400).json({ erro: error.details[0].message });
// prossegue com o processamento se os dados forem válidos
res.status(201).json({ mensagem: 'Usuário criado com sucesso' });
});
app.listen(3000, () => console.log('API validação rodando na porta 3000'));
Esse exemplo mostra como validar um payload de criação de usuário, garantindo que nome, email e idade atendam critérios específicos.
Erros Comuns na Validação
- Validar apenas no frontend.
- Mensagens de erro genéricas ou técnicas demais para o usuário.
- Falta de testes automatizados para validações.
- Ignorar valores padrão ou permitir campos irrelevantes.
Boas Práticas
- Utilizar bibliotecas de validação especializadas (ex: Joi, Yup, Zod).
- Validar tanto no backend quanto, se possível, no frontend.
- Padronizar mensagens de erro.
- Não confiar apenas na validação do frontend.
- Documentar claramente os requisitos de entrada da API.
- Utilizar testes automatizados para cenários válidos e inválidos.