From 74b3cb02a4a3b4a82b192ddd4371108f9d5ac438 Mon Sep 17 00:00:00 2001 From: tulioperdigao <116309232+tulioperdigao@users.noreply.github.com> Date: Thu, 23 Oct 2025 15:51:12 -0300 Subject: [PATCH] REFACTOR: Adiciona retry nas tentativas para consultar a API do viaCEP --- app.js | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) 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 || "";