REFACTOR: Adiciona retry nas tentativas para consultar a API do viaCEP
This commit is contained in:
parent
029bc88e3b
commit
74b3cb02a4
22
app.js
22
app.js
@ -22,15 +22,31 @@ function createApp() {
|
|||||||
const { cep: rawCep, numero: rawNumero } = req.query;
|
const { cep: rawCep, numero: rawNumero } = req.query;
|
||||||
if (!rawCep) return res.status(400).json({ error: "cep é obrigatório" });
|
if (!rawCep) return res.status(400).json({ error: "cep é obrigatório" });
|
||||||
const cep = String(rawCep).trim().replace(/\D/g, "");
|
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() : "";
|
const numero = rawNumero ? String(rawNumero).trim() : "";
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const viaCepData = await fetchJson(
|
const viaCepData = await fetchJson(
|
||||||
`https://viacep.com.br/ws/${cep}/json/`
|
`https://viacep.com.br/ws/${cep}/json/`
|
||||||
);
|
);
|
||||||
if (!viaCepData || viaCepData.erro)
|
// adicionar retry na consulta api ViaCEP
|
||||||
return res.status(404).json({ error: "CEP não encontrado" });
|
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 logradouro = viaCepData.logradouro || "";
|
||||||
const bairro = viaCepData.bairro || "";
|
const bairro = viaCepData.bairro || "";
|
||||||
const cidade = viaCepData.localidade || "";
|
const cidade = viaCepData.localidade || "";
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user