cep-promise
cep-promise copied to clipboard
Serviço instável de busca de ceps
Nos últimos dias, notei que a consulta pelos ceps está retornando 404 not found com ceps existentes. Análise algumas issues por aqui e percebi que o problema pode ser com erros sendo armazenados em cache, retornando estes erros quando não deveria. Em alguns momentos a busca por um cep só funciona com hífen, outras vezes sem hífen e em último caso talvez funcione colocando "?test" depois da url.
No cep 88062510 só deu certo com o hífen, mas não é garantido pois ontem estava funcionando sem o hífen.
https://brasilapi.com.br/api/cep/v1/88062510 https://brasilapi.com.br/api/cep/v1/88062-510 https://brasilapi.com.br/api/cep/v1/88062510?test
Complementando com um pouco de debug:
Usando os provedores brasilapi
ou correios
:
import cep from 'cep-promise';
const CEP = await cep('88062510', {
providers: ['brasilapi'] // ou 'correios'
});
console.log(CEP);
Erro:
Todos os serviços de CEP retornaram erro
Usando os provedores viacep
, widenet
ou correios-alt
:
{
cep: '88062510',
state: 'SC',
city: 'Florianópolis',
neighborhood: 'Lagoa da Conceição',
street: 'Servidão Kairós',
service: 'viacep' // ou 'widenet' e 'correios-alt'
}
Supondo que de fato o problema seja o cachê, acredito que o problema esteja no BrasilAPI, onde o cache, por exemplo, só deveria ser gerado se o CEP for retornado com sucesso.
Usando o cep-promise, ele irá retornar o CEP normalmente com a primeira resposta de sucesso, mesmo que outras derem erro:
import cep from 'cep-promise';
const CEP = await cep('88062-510');
console.log(CEP);
Saída:
{
cep: '88062510',
state: 'SC',
city: 'Florianópolis',
neighborhood: 'Lagoa da Conceição',
street: 'Servidão Kairós',
service: 'correios-alt'
}
Comportamento realmente está intermitente, alguns exemplos para ajudar a debugar:
11035-030: https://brasilapi.com.br/api/cep/v1/11035-030 (CEP só funciona se buscar com hífen) 110350030: https://brasilapi.com.br/api/cep/v1/11035030 (Erro)
05418000: https://brasilapi.com.br/api/cep/v1/05418000 (Só funciona sem hífen) 05418-000: https://brasilapi.com.br/api/cep/v1/05418-000 (Erro)
Update: No via CEP todos os casos funcionam
https://brasilapi.com.br/api/cep/v1/11035-030 https://brasilapi.com.br/api/cep/v1/11035030
Realmente é um erro de cache, pois se colocar uma string aleatoria ?xxx apos o cep ele refaz a busca e retorna o resultado correto.
A ViaCep esta funcionando normalmente como verificado acessando em formato JSON ou em formato XML porem esse mesmo cep retorna um erro https://brasilapi.com.br/api/cep/v1/04513010 a nao ser que altere a url para invalidar o cache desse cep como em https://brasilapi.com.br/api/cep/v1/04513010?alijunior
Acredito que a implementacao para correção seria de salvar o cache somente em caso de sucesso no retorno da pesquisa, ou entao invalidar o cache apos determinado periodo.