Como consultar um CEP com Node.js

Como consultar um CEP com Node.js

É muito comum encontrar em formulários de cadastro a utilização de preenchimento automático de endereço a partir do CEP, poupando assim o preenchimento manual por parte do usuário. Na internet podemos encontrar diversas tecnologias para fazer essas consultas em API de terceiros.

Neste tutorial vamos utilizar um módulo para Node.js chamado cep-promise.

O cep-promise faz uma consulta diretamente aos serviços dos Correios, ViaCEP e WideNet.

Instalando cep-promise

Para instalar o cep-promise basta acessarmos a pasta raiz do nosso projeto em node com o prompt de comando e executar um dos códigos a seguir:

npm install --save cep-promise

Código para quem utiliza npm.

bower install --save cep-promise

Código para quem utiliza Bower.

yarn add cep-promise

Código para quem utiliza yarn.

Utilizando o cep-promise

Para consultar um CEP com o cep-promise é só usar o código abaixo:

import cep from 'cep-promise';

cep('04538133')
  .then((result) => {
    console.log(result);
  })
  .catch((error) => {
    console.log(error);
  });

O retorno será a variável result, que é um JSON com as seguintes informações:

{
  "cep": "04538133",
  "state": "SP",
  "city": "São Paulo",
  "neighborhood": "Itaim Bibi",
  "street": "Avenida Brigadeiro Faria Lima"
}

O endereço utilizado no exemplo é o do Google em SP. 😉

Usando cep-promise em um Controller

Geralmente utilizamos a busca de CEP em um Controller do nosso sistema, que é encarregado em fazer a consulta e retornar os dados em JSON. Abaixo podemos conferir um exemplo de um Controller que faz a requisição.

// faz a importação do módulo
import cep from 'cep-promise';

class CepController {
  // método do controller que é acessado através de uma rota
  show(req, res) {
    // pego o CEP da requisição do client
    const cepParaConsulta = req.body.cep;
    // código do cep-promise
    cep(cepParaConsulta)
      .then((result) => {
        // retorno dos dados em caso de sucesso
        return res.json(result);
      })
      .catch((error) => {
        // retorno do erro caso exista
        return res.status(400).json(error);
      });
  }
}

// exportação da classe CepController
export default new CepController();
controllers/CepController.js

Referências