Validação de Dados no Backend
A validação de dados no Backend é a única defesa real contra dados malformados, maliciosos ou inconsistentes que tentam entrar no seu sistema.
Fluxo de Validação
- Frontend: Faz a validação básica (formatos, campos obrigatórios) para feedback instantâneo.
- Backend: Recebe a requisição e valida novamente todos os campos contra o esquema de dados e regras de negócio.
- Persistência: O banco de dados pode ter restrições adicionais (unique, not null).
Como fazer vs Como não fazer
✅ Como fazer
- Utilize bibliotecas de validação de esquema (como Zod, Joi ou Yup) no Backend para garantir que o payload da requisição segue o formato esperado.
- Retorne mensagens de erro claras e estruturadas da API para que o Frontend possa mapeá-las de volta para os campos do formulário.
- Valide não apenas o formato, mas a autoridade do usuário sobre aquele dado (ex: o usuário X tem permissão para editar o paciente Y?).
❌ Como não fazer
- Não assuma que os dados estão limpos apenas porque "vêm da nossa própria aplicação".
- Não use validações de "caixa preta" que retornam apenas um erro genérico 500 sem explicar o que falhou (para erros de validação, use sempre 400 Bad Request ou 422 Unprocessable Entity).
- Não confie em validações de tipos do TypeScript em tempo de execução; o TS desaparece após o build, use validações reais de runtime.