Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Uma maneira de lidar com o erro de código 400.

O erro ocorre quando o CEP inclui letras e símbolos, e é menor ou maior que 8.

Eu encontrei um código (/^[a-zA-Z0-9]+$/.test(str)) que retorna true se uma string é alfanumérica. Alterei ele para retornar true caso a string seja composta apenas por números e apliquei no código abaixo:

const CEP = '01001000';

try {
    if(/^[0-9]+$/.test(CEP) && CEP.length === 8){
        buscaCEP();
    } else {
        throw Error('CEP inválido');
    }
} catch(e) {
    console.log(e);
}

function buscaCEP() {
    const consultaCEP = fetch(`https://viacep.com.br/ws/${CEP}/json/`)
        .then(resposta => resposta.json())
        .then(r => {
            if(r.erro) {
                throw Error('Esse CEP não existe.');
            } else {
                console.log(r);
            }
        })
        .catch(erro => console.log(erro));

    console.log(consultaCEP);
}
Gostaria de saber da validade do código.
1 resposta
solução!

Oi Christopher, tudo bem?

Pelo que você compartilhou, seu código parece estar correto e deve funcionar como esperado.

O trecho de código /^[0-9]+$/.test(CEP) verifica se a variável CEP contém apenas números, o que é um requisito para um CEP válido. Além disso, você também verifica se o CEP tem exatamente 8 dígitos, que é o tamanho padrão de um CEP no Brasil.

Seu código então tenta buscar o CEP e, se a resposta da API indicar um erro (ou seja, se r.erro for verdadeiro), ele lança uma exceção com a mensagem 'Esse CEP não existe.'.

Se o CEP não for numérico ou não tiver 8 dígitos, seu código lança uma exceção com a mensagem 'CEP inválido'.

Parabéns pelo trabalho!

Um abraço e bons estudos.