Olá pessoal, hoje veremos algumas formas de consultar CEP por meio de AJAX. O que é algo muito útil em aplicações WEB, pois auxilia o usuário na digitação do endereço de cadastro. Para os exemplos aqui mostrados usaremos como base a seguinte página HTML:
CEP
Os exemplos que seguirão deverão ter seu código inserido dentro da tag script. Pois usaremos o campo #cep e o botão #buscar para fazer a requisição.
Existem várias maneiras de se fazer isso, veja algumas delas:
DevMedia API
Para usar a API do DevMedia você precisa se cadastrar para gerar uma chave, mas não se preocupe o uso é grátis e ilimitado para consultas de CEP.
As requisições devem ser feitas com o método GET para o endereço http://www.devmedia.com.br/api/cep/service/, passando como parâmetro cep, chave e opcionalmente o formato, com os nomes assim como estão em negrito. Veja um exemplo:
$('#buscar').click(function(){
$.ajax({
url:'http://www.devmedia.com.br/api/cep/service/',
type:'get',
dataType:'json',
crossDomain: true,
data:{
cep: $('#cep').val(), //pega valor do campo
formato:'json',
chave: 'SUA CHAVE'
},
success: function(res){
$('#resultado').append('RUA'+res.logradouro)
.append('BAIRRO'+res.bairro)
.append('CIDADE'+res.cidade+ ' - '+res.uf);
}
})
});
Pesquisando pelo CEP 63047-310, ele retornou o seguinte resultado:
{
"resultado_txt":"sucesso",
"usuario":{
"login":"loginusuario",
"nome":"Nome Usuario",
"email":"email_usuario",
"telefone":"telefone"
},
"uf":"CE",
"cidade":"Juazeiro do Norte",
"bairro":"Planalto",
"estado":"Cear\u00e1",
"logradouro":"Rua Ricardo Luiz de Andrade",
"unidade":"",
"cpc":"",
"logradouro_curto":"Rua Ricardo Luiz de Andrade",
"codigomunicipio":2307304,
"iscapital":0
}
Veja que no objeto JSON existe a chave usuario, que contém dados de usuário cadastrado a quem pertence a chave usada. E as outras chaves trazem os dados referentes ao endereço ao qual corresponde o CEP.
Vantagens e desvantagens
A API do DevMedia tem como vantagem o código do município no IBGE e a flag que diz se é uma capital ou não.
A desvantagem é a dificuldade de uso em relação ao Cross site, você deve configurar seu servidor ou rede para permitir solicitações Cross domain. Outra desvantagem é que ele não diz o tipo de logradouro.
E uma falha é o fato de trazer o status do resultado em forma de texto, por exemplo, quando o CEP não existe e dá a mensagem falha – CEP invalido, seria melhor se ele trouxesse um código de status.
Republica Virtual
Na API da Republica Virtual não é necessário o uso de chave, o que torna a busca mais simples.
As requisições devem ser feitas para http://cep.republicavirtual.com.br/web_cep.php, e devem ser passados por parâmetro o cep e o formato. Veja um exemplo:
$('#buscar').click(function(){
$.ajax({
url:'http://cep.republicavirtual.com.br/web_cep.php',
type:'get',
dataType:'json',
crossDomain: true,
data:{
cep: $('#cep').val(), //pega valor do campo
formato:'json'
},
success: function(res){
$('#resultado').append(''+res.tipo_logradouro+''+res.logradouro)
.append('BAIRRO'+res.bairro)
.append('CIDADE'+res.cidade+ ' - '+res.uf);
}
});
});
Pesquisando pelo CEP 63047-310, ele retornou o seguinte resultado:
{
"resultado":"1",
"resultado_txt":"sucesso - cep completo",
"uf":"CE",
"cidade":"Juazeiro do Norte",
"bairro":"Planalto",
"tipo_logradouro":"Rua",
"logradouro":"Ricardo Luiz de Andrade"
}
Veja que é mais simples, e traz o resultado como código 1 para Ok e 0 para erro.
Vantagens e desvantagens
A principal vantagem da API da Republica Virtual é o fato de trazer o código de resultado em formato numérico. Outra vantagem é o tipo de logradouro.
Uma desvantagem é o fato de não trazer o código do município no IBGE.
Atualização da base
Ambas as bases parecem bem atualizadas. Infelizmente não consegui entrar em contato com o responsável pela Republica Virtual, que parece ser realmente mais antiga.