diff --git a/app.js b/app.js index e4c64fd..07f6577 100644 --- a/app.js +++ b/app.js @@ -22,15 +22,31 @@ function createApp() { const { cep: rawCep, numero: rawNumero } = req.query; if (!rawCep) return res.status(400).json({ error: "cep é obrigatório" }); const cep = String(rawCep).trim().replace(/\D/g, ""); - if (cep.length !== 8) return res.status(400).json({ error: "cep inválido, tente digitar apenas números" }); + if (cep.length !== 8) return res.status(400).json({ error: "cep inválido, verifique se foram digitados apenas números" }); const numero = rawNumero ? String(rawNumero).trim() : ""; try { const viaCepData = await fetchJson( `https://viacep.com.br/ws/${cep}/json/` ); - if (!viaCepData || viaCepData.erro) - return res.status(404).json({ error: "CEP não encontrado" }); + // adicionar retry na consulta api ViaCEP + if (!viaCepData || viaCepData.erro) { + console.info(`[INFO] Primeira tentativa da API ViaCEP falhou para o CEP ${cep}, tentando novamente...`); + const attempt = 0; + const maxAttempts = 3; + let viaCepData = null; + while (attempt < maxAttempts) { + viaCepData = await fetchJson( + `https://viacep.com.br/ws/${cep}/json/` + ); + if (viaCepData && !viaCepData.erro) break; + console.info(`[INFO] Tentativa ${attempt + 1} da API ViaCEP`); + attempt++; + } + if (!viaCepData || viaCepData.erro) { + return res.status(404).json({ error: "CEP não encontrado" }); + } + } const logradouro = viaCepData.logradouro || ""; const bairro = viaCepData.bairro || ""; const cidade = viaCepData.localidade || "";