Correios RESTful API

Olá pessoal como podem ver ando meio sem tempo pro blog mas esse tempo está sendo bem gasto, com varias horas de desenvolvimento hehe, e nesse post venho mostrar um resultado disso. No projeto em que estou trabalhando atualmente surgiu a necessidade daquela funcionalidade de autocompletar um endereço a partir de um cep informado pelo usuário, como os correios não tem uma API para isso e o banco de dados deles é bem caro resolvi fazer uma API open source para usarmos em nosso projeto e para que outros desenvolvedores também possam usá-la.

A API está hospedada em: http://correiosapi.apphb.com/

Para fazer uma pesquisa de CEP tente algo como:

$.ajax({
  url: 'http://correiosapi.apphb.com/cep/76873274',
  dataType: 'jsonp',
  crossDomain: true,
  contentType: "application/json",
  statusCode: {
    200: function(data) { console.log(data); } // Ok
    ,400: function(msg) { console.log(msg);  } // Bad Request
    ,404: function(msg) { console.log("CEP não encontrado!!"); } // Not Found
  }
});

Se o cep buscado for encontrado você terá como resultado o um objeto json:

{
    bairro: "Setor Institucional"
    cep: "76872862"
    cidade: "Ariquemes"
    estado: "RO"
    logradouro: "Rio Madeira "
    tipodelogradouro: "Rua"
}

Bem, aí você me pergunta, mas de onde vem esses dados já que os correios não tem uma API publica?

Resposta: Os dados vem direto dos correios mesmo! A API faz um web request no link http://m.correios.com.br/movel/buscaCepConfirma.do, e um "crawler" trata o html retornado para extrair as informações do endereço.

Basicamente é isso, o código fonte desse projeto pode ser encontrado em meu github: https://github.com/emersonsoares caso você queria hospedar a API em um servidor próprio sinta-se a vontade, pull-requests serão bem vindos também.

Ah! Mais um detalhe, a API foi desenvolvida utilizando Asp.Net WebAPI.

comments powered by Disqus