Dados conteúdo e configuração como comportamento
Nesta aula
Reconhecer entradas além do formulário
Um arquivo de dados, uma variável de configuração e o texto publicado alteram o que o programa faz. O código pode estar correto e ainda apresentar um serviço encerrado se o catálogo estiver desatualizado. Na Oficina Caracol, usamos dados artificiais e uma estrutura explícita, descrita junto ao pacote. O schema, ou esquema, declara a forma esperada: campos, tipos e restrições. A validação compara a entrada com esse contrato e produz uma decisão antes da publicação.
Convém distinguir três perguntas. A estrutura é válida? O conteúdo representa algo autorizado e atual? A configuração corresponde ao ambiente? Um texto bem formado não demonstra sua veracidade. Uma URL com sintaxe válida não demonstra que o destino existe ou que pertence à organização esperada. Verificações de estrutura, regra de negócio, disponibilidade e autoridade precisam ser escolhidas separadamente [S18, documentação sobre tipos e objetos; S03, práticas de definição e verificação de requisitos].
Contrato conceitual preenchido
O schema efetivo de pratica/data/casos.json contém exatamente id, titulo, descricao e ativo. As três primeiras propriedades são strings não vazias; ativo é booleano; os identificadores são únicos; propriedades extras são rejeitadas. A tabela usa os nomes reais para relacionar estrutura e publicação. Evidências e autorizações editoriais podem ser registradas nos documentos de apoio, sem acrescentar campos desconhecidos ao arquivo do catálogo.
| Elemento conceitual | Regra | Entrada fornecida | Decisão esperada |
|---|---|---|---|
| id | String não vazia e única no conjunto | A | Aceitar se nenhum outro registro usar A |
| titulo | String não vazia; revisão editorial separada | Oficina de diagnóstico | Aceitar estrutura e encaminhar conteúdo à revisão |
| descricao | String não vazia; conteúdo autorizado | Descrição fictícia para estudo | Aceitar estrutura; identificar como demonstração |
| ativo | Booleano obrigatório | false | Aceitar como dado; não listar publicamente |
| Propriedade extra | Campos fora do contrato são rejeitados | imagem | Rejeitar estrutura; documentar origem/autorização fora deste schema |
Preparar a validação e a aprovação
- Documente o schema real com tipos, campos obrigatórios, valores permitidos e política para campos desconhecidos. Não converta silenciosamente uma entrada inválida em conteúdo aprovado.
- Separe erros de estrutura de decisões editoriais. A primeira categoria pode ser automatizada; a segunda requer fonte e autoridade apropriadas ao conteúdo.
- Execute npm run validate dentro de pratica para as verificações implementadas. Leia o alcance declarado pelo comando e resolva cada erro antes de publicar.
- Mantenha a configuração necessária a cada ambiente identificada, sem incluir segredos no repositório. Mudanças de configuração também precisam de revisão e evidência.
- Planeje alterações de estrutura com compatibilidade, migração e reconciliação. Reconciliação é a comparação entre o conjunto esperado e o resultado produzido para detectar perdas ou diferenças indevidas.
Do erro ao reparo observável
Considere um registro cujo campo ativo esteja ausente. validarCasos deve lançar TypeError para essa entrada. Na fronteira HTTP, catálogo inválido produz resposta 500 com mensagem pública genérica, sem revelar detalhes internos. Transformar ausência em ativo para evitar um erro mudaria a política de publicação. O reparo é decidir o valor a partir da fonte autorizada e validar novamente. A mensagem de diagnóstico apropriada ao mantenedor deve permitir localizar a regra violada sem expor informação indevida ao visitante.
Agora considere uma troca de nome de campo. A migração recebe três registros de exemplo e deve produzir três registros equivalentes na nova estrutura, preservando identificadores e indicador de atividade. A contagem ajuda, mas não basta: três registros incorretos ainda totalizam três. A reconciliação compara os valores relevantes antes e depois. O resultado deve ser registrado como esperado até a execução; só então pode receber observado e veredito.
Erros e condição de avanço
| Problema | Reparo e evidência |
|---|---|
| Campo opcional tratado como obrigatório por uma tela | Alinhar contrato e consumidor; testar presença e ausência permitida |
| Conteúdo sem fonte | Identificar fonte e autoridade ou suspender a publicação do trecho |
| Configuração funciona apenas na máquina de quem criou | Documentar a configuração necessária e reproduzir o fluxo no ambiente declarado |
O capítulo avança quando a estrutura passa nas validações aplicáveis, o conteúdo tem aprovação pertinente e a configuração foi verificada no ambiente de destino. O gate registra resultados e decisões, além de lacunas não impeditivas aceitas. Aprovar o texto não corrige um schema inválido; cada camada conserva sua própria evidência.
Exercício e solução
Dados: A tem id, titulo e descricao, mas falta ativo; B tem todos os quatro campos válidos e está inativo, porém um documento editorial ainda registra imagem sem origem; C está ativo, possui os quatro campos estruturais válidos e texto ainda sem revisão. Para cada registro, indique pendência estrutural e pendência de publicação.
Ver solução comentada
Solução: A exige decisão e preenchimento autorizado do booleano obrigatório antes de passar a validação. B é estruturalmente válido e permanece fora da listagem por estar inativo; o uso da imagem continua bloqueado no processo editorial por falta de origem/autorização. C pode passar a estrutura, porém aguarda revisão editorial. A rubrica exige separar essas dimensões, não adicionar imagem ao schema e preservar as pendências; preencher tudo como aprovado porque o JSON é legível não atende ao exercício.
Fontes relacionadas
Consulte os limites e as seções de apoio de cada referência.
S18 S03Tente o exercício antes de consultar a solução. Marque a aula para organizar sua leitura.
A conclusão desta leitura não equivale a certificação ou aceite de um projeto real. Teste os exemplos no escopo indicado e registre as limitações.