Facebook Pixel
Consumindo REST API com JavaScript

Consumindo REST API com JavaScript

Este artigo é parte da série:

Funções:

Fetch(URI): Essa função merece uma aula à parte. Ela consulta um endereço e armazena a resposta em uma variável. O melor é que ela faz uma chamada assíncrona, ou seja, o programa continua funcionando normalmente enquanto ela executa em segundo plano seus procedimentos internos.

Ainda vou explicar os detalhes de funcionamento desta função tão especial do Javascript, mas por hora vou deixar um exemplo de código porque já vai ser útil para quem estiver precisando consumir uma API com JavaScript.

JSON.Parse(Conteudo): Transforma o conteúdo JSON em objeto.

Segue um exemplo consumindo a API do ViaCEP, que mostra todos os dados de um determinado CEP.

<html>
    <head>
    <title>Treino CEP</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

    <script>
    
    // Limpa formulário
    function LimpaForm() {
            document.getElementById('rua').value=("");
            document.getElementById('bairro').value=("");
            document.getElementById('cidade').value=("");
            document.getElementById('uf').value=("");
            document.getElementById('regiao').value=("");
            document.getElementById('ddd').value=("");
            document.getElementById('ibge').value=("");
            document.getElementById('gia').value=("");
            document.getElementById('siafi').value=("");
    }

    // Consulta
    function Consulta() {
        event.preventDefault();
        var vlr = document.getElementById('cep').value;
        PesquisaCEP(vlr);
    }

    // Pesquisa CEP
    function PesquisaCEP(valor) {
        
        // Limpa Fomulário
        LimpaForm();

        
        // Extrai somente números
        var cep = valor.replace(/\D/g, '');

        // Verifica se campo cep possui valor informado
        if (cep == "" ) {
            document.getElementById('rua').value = "CEP não informado";
            return; 
        }

        //Regular expression para validar o CEP.
        var validacep = /^[0-9]{8}$/;
        if (!validacep.test(cep)) {
            document.getElementById('rua').value = "CEP inválido";
            return; 
        }

        //Realiza consulta.
        document.getElementById('rua').value="Consultado CEP...";
        var Consulta = 'https://viacep.com.br/ws/'+ cep + '/json';
        return fetch(Consulta)
            .then(objeto => objeto.text())
            .then(dados => Popula(dados));
    }

    // Popula conteúdo dos campos
    function Popula(conteudo) {
        console.log(conteudo);
        if (!conteudo.includes("erro")) {
            var obj = JSON.parse(conteudo);
            document.getElementById('cep').value    = (obj.cep);
            document.getElementById('rua').value    = (obj.logradouro);
            document.getElementById('bairro').value = (obj.bairro);
            document.getElementById('cidade').value = (obj.localidade);
            document.getElementById('uf').value     = (obj.uf);
            document.getElementById('regiao').value = (obj.regiao);
            document.getElementById('ddd').value    = (obj.ddd);
            document.getElementById('ibge').value   = (obj.ibge);
            document.getElementById('gia').value    = (obj.gia);
            document.getElementById('siafi').value  = (obj.siafi);
        } 
        else {
            limpa_formulário_cep();
            alert("CEP não encontrado.");
        }
    }
        
    </script>

    </head>

    <body>
      <form method="get" action=".">
          <table>
              <tr>
                  <td>CEP</td>
                  <td>
                      <input name="cep" type="text" id="cep" value="" size="10" 
                      maxlength="9" onblur="PesquisaCEP(this.value);" />
                  </td>
              </tr>
              <tr>
                  <td>Logradouro</td>
                  <td><input name="rua" type="text" id="rua" size="60" /></td>
              </tr>
              <tr>
                  <td>Bairro</td>
                  <td><input name="bairro" type="text" id="bairro" size="40" /></td>
              </tr>
              <tr>
                  <td>Cidade</td>
                  <td><input name="cidade" type="text" id="cidade" size="40" /></td>
              </tr>
              <tr>
                  <td>UF</td>
                  <td><input name="uf" type="text" id="uf" size="2" /></td>
              </tr>
              <tr>
                  <td>Região</td>
                  <td><input name="regiao" type="text" id="regiao" size="40" /></td>
              </tr>
              <tr>
                  <td>DDD</td>
                  <td><input name="ddd" type="text" id="ddd" size="8" /></td>
              </tr>
              <tr>
                  <td>IBGE</td>
                  <td><input name="ibge" type="text" id="ibge" size="8" /></td>
              </tr>
              <tr>
                  <td>GIA</td>
                  <td><input name="gia" type="text" id="gia" size="8" /></td>
              </tr>
              <tr>
                  <td>SIAFI</td>
                  <td><input name="siafi" type="text" id="siafi" size="8" /></td>
              </tr>
              <tr>
                  <td>&nbsp;</td>
                  <td>
                      <!-- Apenas para teste, já que PesquisaCEP é chamado automaticamente pelo onblur -->
                      <button name="cmdConsulta" id="cmdConsulta" onclick="Consulta()">Realiza Consulta de CEP</button>
                  </td>
              </tr>
          </table>
      </form>
    </body>

    </html>

Deixe seu comentário