API de links
Encurtador de URL com servidor HTTP, validação e cache.
bash
dataforge run src/main.df
curl -X POST localhost:8080/encurtar -d '{"url":"https://exemplo.com/pagina"}'
# {"codigo": "xYAXp7", "url": "https://exemplo.com/pagina"} 201
curl localhost:8080/xYAXp7 # 200
curl localhost:8080/naoexiste # 404
curl localhost:8080/estatisticas # os mais acessadosRegra separada de transporte#
Toda a lógica está em encurtador.df, sem uma linha de HTTP. Os 11 testes rodam em milissegundos e não sobem servidor; main.df é uma casca de trinta linhas.
Testar HTTP é lento e frágil. Se a regra estivesse dentro do handler, cada teste precisaria de porta, requisição e espera.
O alfabeto evita ambiguidade#
dataforge
steady ALFABETO := "abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ23456789"
steady TAMANHO_CODIGO := 6Sem l, I, 0 nem O — quem lê um código em voz alta ou copia de um papel não erra.
400, não 500#
Uma URL inválida é erro de quem chamou, não falha do servidor. O status precisa dizer de quem é a responsabilidade — e o cliente que recebe 500 tenta de novo, enquanto o que recebe 400 corrige a requisição.
Semente no gerador#
E.novo(42) produz sempre os mesmos códigos, o que torna o teste reproduzível. Sem semente, usa o relógio.