27 de novembro de 2024 • 15 min de leitura
Guia Completo: Como Consumir APIs com JavaScript – Exemplos Práticos de GET e POST
Descubra como consumir APIs com JavaScript através de exemplos práticos de requisições GET e POST. Entenda o que são APIs e JSON para aprimorar suas habilidades em desenvolvimento front-end.
Consumir APIs (“Application Programming Interfaces”) é uma habilidade essencial para qualquer desenvolvedor front-end. Com elas, você pode integrar dados e funcionalidades de diferentes serviços, tornando suas aplicações mais dinâmicas e interativas. Neste guia, vamos explicar o que são APIs, o que é JSON, e como realizar requisições GET e POST usando JavaScript com exemplos práticos. Vamos lá! 💻✨
O Que é uma API? 🤔
API significa Application Programming Interface (Interface de Programação de Aplicações). Basicamente, uma API é um conjunto de regras que permite que diferentes softwares se comuniquem entre si. No contexto web, APIs facilitam a troca de informações entre o front-end (a interface que o usuário vê) e o back-end (servidores e bancos de dados).
Exemplos de Uso de APIs:
- Redes Sociais: Integrar funcionalidades do Facebook ou Twitter no seu site.
 - Mapas: Usar o Google Maps para exibir mapas interativos.
 - Autenticação: Implementar login com contas Google ou Facebook.
 - Dados Públicos: Consumir dados de APIs públicas, como informações meteorológicas ou financeiras.
 
O Que é JSON? 📄
JSON (JavaScript Object Notation) é um formato leve de troca de dados, fácil de ler e escrever para humanos, e fácil de interpretar e gerar para máquinas. É amplamente utilizado em APIs para enviar e receber dados, devido à sua estrutura simples e compatibilidade com diversas linguagens de programação. JSON é baseado na sintaxe de objetos do JavaScript, o que o torna uma escolha natural para aplicações web, especialmente no front-end. Sua facilidade de uso e formato humanamente legível ajudam a manter o código mais limpo e compreensível, tornando-o ideal para a troca de informações entre cliente e servidor.
Exemplo de JSON:
{
  "nome": "João Silva",
  "email": "joao.silva@example.com",
  "idade": 30
}
Por Que Consumir APIs no Front-End? 💡
Consumir APIs no front-end traz várias vantagens:
- Dados Atualizados: Sua aplicação pode exibir informações em tempo real sem precisar recarregar a página.
 - Modularidade: Facilita a separação entre front-end e back-end, tornando o código mais organizado.
 - Reutilização: APIs podem ser usadas em diferentes projetos ou partes da aplicação.
 - Escalabilidade: Permite que a aplicação cresça de forma mais eficiente, já que front-end e back-end podem ser atualizados independentemente.
 
Como as APIs Funcionam? 🔄
APIs funcionam através de requisições e respostas. O front-end faz uma requisição a uma API, que processa essa requisição e retorna uma resposta com os dados solicitados.
Métodos HTTP Básicos:
- GET: Solicita dados de um recurso específico.
 - POST: Envia dados para criar ou atualizar um recurso.
 - PUT/PATCH: Atualiza recursos.
 - DELETE: Remove recursos.
 
Como Realizar uma Requisição GET com JavaScript 📅
Vamos começar com um exemplo básico de como realizar uma requisição GET utilizando a Fetch API, que é a forma moderna e recomendada de fazer requisições HTTP no JavaScript.
Exemplo: Obter Dados de uma API Pública
Vamos obter uma lista de usuários da API pública JSONPlaceholder.
<!DOCTYPE html>
<html lang="pt-BR">
  <head>
    <meta charset="UTF-8" />
    <title>Requisição GET com Fetch API</title>
  </head>
  <body>
    <h1>Lista de Usuários</h1>
    <ul id="user-list"></ul>
    <script>
      // URL da API
      const apiURL = 'https://jsonplaceholder.typicode.com/users';
      // Função para buscar dados
      async function fetchUsers() {
        try {
          const response = await fetch(apiURL);
          // Verifica se a requisição foi bem-sucedida
          if (!response.ok) {
            throw new Error(`Erro: ${response.status}`);
          }
          const users = await response.json();
          const userList = document.getElementById('user-list');
          // Exibe os usuários na lista
          users.forEach((user) => {
            const li = document.createElement('li');
            li.textContent = `${user.name} (${user.email})`;
            userList.appendChild(li);
          });
        } catch (error) {
          console.error('Erro ao buscar usuários:', error);
        }
      }
      // Chama a função ao carregar a página
      fetchUsers();
    </script>
  </body>
</html>
Explicação 🗒️:
- Fetch API: Utilizamos 
fetch(apiURL)para realizar a requisição GET. - Async e Await: 
awaitespera a resposta da requisição, easyncpermite o uso deawaitdentro da função. - Tratamento de Erros: Verificamos se a resposta foi bem-sucedida com 
response.oke tratamos possíveis erros comtry...catch. - Manipulação do DOM: Iteramos sobre os dados recebidos e os inserimos na lista HTML.
 
Como Realizar uma Requisição POST com JavaScript 📤
Agora, vamos ver como enviar dados para uma API utilizando o método POST. Continuaremos usando a API do JSONPlaceholder para simular a criação de um novo usuário.
Exemplo: Enviar Dados para Criar um Novo Usuário
<!DOCTYPE html>
<html lang="pt-BR">
  <head>
    <meta charset="UTF-8" />
    <title>Requisição POST com Fetch API</title>
  </head>
  <body>
    <h1>Criar Novo Usuário</h1>
    <form id="user-form">
      <label for="name">Nome:</label>
      <input type="text" id="name" name="name" required /><br /><br />
      <label for="email">Email:</label>
      <input type="email" id="email" name="email" required /><br /><br />
      <button type="submit">Enviar</button>
    </form>
    <div id="result"></div>
    <script>
      const form = document.getElementById('user-form');
      const resultDiv = document.getElementById('result');
      const apiURL = 'https://jsonplaceholder.typicode.com/users';
      form.addEventListener('submit', async (e) => {
        e.preventDefault(); // Evita o comportamento padrão do formulário
        const name = document.getElementById('name').value;
        const email = document.getElementById('email').value;
        const data = { name, email };
        try {
          const response = await fetch(apiURL, {
            method: 'POST',
            headers: {
              'Content-Type': 'application/json',
            },
            body: JSON.stringify(data),
          });
          if (!response.ok) {
            throw new Error(`Erro: ${response.status}`);
          }
          const result = await response.json();
          resultDiv.innerHTML = `<p>Usuário criado com sucesso! ID: ${result.id}</p>`;
        } catch (error) {
          console.error('Erro ao criar usuário:', error);
          resultDiv.innerHTML = `<p style="color: red;">Erro ao criar usuário.</p>`;
        }
      });
    </script>
  </body>
</html>
Explicação 🗒️:
- Formulário HTML: Coletamos os dados do usuário através de um formulário.
 - Evento Submit: Adicionamos um listener para o evento 
submitdo formulário. - Fetch API com POST: Utilizamos 
fetchcom o métodoPOST, definindo os headers apropriados e convertendo os dados para JSON comJSON.stringify(data). - Tratamento de Respostas: Após a requisição, exibimos o resultado ou um erro na página.
 
Perguntas Frequentes sobre Consumo de APIs 🤔
Como consumir uma API em JavaScript?
Para consumir uma API em JavaScript, você pode usar a Fetch API ou bibliotecas como Axios. A Fetch API é nativa e permite fazer requisições HTTP de forma simples e eficiente.
O que é a Fetch API e como ela funciona?
A Fetch API é uma interface moderna para fazer requisições HTTP no JavaScript. Ela retorna Promises, facilitando o trabalho com operações assíncronas. Com ela, você pode realizar métodos como GET, POST, PUT, DELETE, entre outros.
Como tratar erros ao consumir uma API?
É importante sempre tratar erros para garantir que sua aplicação lide corretamente com falhas. Utilize blocos try...catch e verifique o status da resposta com response.ok para identificar e tratar erros.
O que é CORS e como lidar com ele ao consumir APIs?
CORS (Cross-Origin Resource Sharing) é uma política de segurança que restringe requisições feitas de um domínio diferente. Para lidar com CORS, o servidor da API deve permitir o domínio do seu front-end através de cabeçalhos específicos.
Tratamento de Respostas e Erros ⚠️
Ao consumir APIs, é crucial tratar as respostas e possíveis erros de forma adequada para garantir uma boa experiência do usuário e facilitar a depuração.
Verificando o Status da Resposta
Sempre verifique o status da resposta para garantir que a requisição foi bem-sucedida:
if (!response.ok) {
  throw new Error(`Erro: ${response.status}`);
}
Tratamento de Erros com Try...Catch
Envolva suas requisições em blocos try...catch para capturar e lidar com erros:
try {
  // Código da requisição
} catch (error) {
  console.error('Erro:', error);
  // Atualize a interface do usuário para refletir o erro
}
Exibindo Feedback ao Usuário
Informe o usuário sobre o estado da requisição, seja sucesso ou erro:
resultDiv.innerHTML = `<p>Operação realizada com sucesso!</p>`;
Ou, em caso de erro:
resultDiv.innerHTML = `<p style="color: red;">Ocorreu um erro. Tente novamente.</p>`;
Ferramentas e Boas Práticas 🚀
Ferramentas Úteis
- Postman: Ferramenta para testar e desenvolver APIs.
 - Insomnia: Alternativa ao Postman para testes de APIs.
 - JSONPlaceholder: API falsa para prototipagem e testes.
 
Boas Práticas
- Utilize Async/Await: Facilita a escrita e leitura de código assíncrono.
 - Trate Erros Adequadamente: Sempre considere possíveis falhas nas requisições.
 - Mantenha a Segurança: Nunca exponha chaves de API no front-end. Use variáveis de ambiente e back-ends seguros.
 - Documente suas APIs: Facilita a manutenção e a colaboração em projetos.
 - Otimize as Requisições: Evite requisições desnecessárias e utilize cache quando apropriado.
 
Passo a Passo para Consumir uma API 📋
- Entenda a API: Leia a documentação da API para saber quais endpoints estão disponíveis e quais parâmetros são necessários.
 - Faça uma Requisição de Teste: Use ferramentas como Postman para testar os endpoints.
 - Implemente no Front-End: Utilize Fetch API ou Axios para fazer as requisições no seu código JavaScript.
 - Trate as Respostas: Parseie os dados recebidos e manipule o DOM para exibir as informações.
 - Gerencie Erros: Adicione tratamentos para lidar com possíveis falhas nas requisições.
 
Exemplos Práticos Adicionais 📚
Requisição GET com Axios
Se preferir usar uma biblioteca, o Axios é uma ótima opção. Por que usar Axios ao invés de Fetch API? O Axios possui várias vantagens que o tornam popular:
- Sintaxe Mais Simples: O Axios simplifica o código, tornando-o mais conciso e fácil de ler, especialmente ao lidar com configurações complexas de requisições.
 - Transformações Automáticas de Dados: O Axios automaticamente converte os dados JSON, tanto na requisição quanto na resposta, sem precisar usar métodos como 
.json(). - Intercepção de Requisições e Respostas: O Axios permite adicionar lógica antes que uma requisição seja enviada ou uma resposta seja recebida, usando interceptadores, o que facilita o tratamento de erros e autenticação.
 - Suporte a Cancelamento de Requisições: Com Axios, você pode cancelar requisições, o que é particularmente útil em aplicações com muitas requisições concorrentes.
 - Compatibilidade Melhor com Navegadores Antigos: Axios oferece suporte a navegadores mais antigos sem precisar de polyfills adicionais.
 
<!DOCTYPE html>
<html lang="pt-BR">
  <head>
    <meta charset="UTF-8" />
    <title>Requisição GET com Axios</title>
    <script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
  </head>
  <body>
    <h1>Lista de Usuários com Axios</h1>
    <ul id="user-list"></ul>
    <script>
      const apiURL = 'https://jsonplaceholder.typicode.com/users';
      async function fetchUsers() {
        try {
          const response = await axios.get(apiURL);
          const users = response.data;
          const userList = document.getElementById('user-list');
          users.forEach((user) => {
            const li = document.createElement('li');
            li.textContent = `${user.name} (${user.email})`;
            userList.appendChild(li);
          });
        } catch (error) {
          console.error('Erro ao buscar usuários:', error);
        }
      }
      fetchUsers();
    </script>
  </body>
</html>
Requisição POST com Axios
<!DOCTYPE html>
<html lang="pt-BR">
  <head>
    <meta charset="UTF-8" />
    <title>Requisição POST com Axios</title>
    <script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
  </head>
  <body>
    <h1>Criar Novo Usuário com Axios</h1>
    <form id="user-form">
      <label for="name">Nome:</label>
      <input type="text" id="name" name="name" required /><br /><br />
      <label for="email">Email:</label>
      <input type="email" id="email" name="email" required /><br /><br />
      <button type="submit">Enviar</button>
    </form>
    <div id="result"></div>
    <script>
      const form = document.getElementById('user-form');
      const resultDiv = document.getElementById('result');
      const apiURL = 'https://jsonplaceholder.typicode.com/users';
      form.addEventListener('submit', async (e) => {
        e.preventDefault();
        const name = document.getElementById('name').value;
        const email = document.getElementById('email').value;
        const data = { name, email };
        try {
          const response = await axios.post(apiURL, data, {
            headers: {
              'Content-Type': 'application/json',
            },
          });
          resultDiv.innerHTML = `<p>Usuário criado com sucesso! ID: ${response.data.id}</p>`;
        } catch (error) {
          console.error('Erro ao criar usuário:', error);
          resultDiv.innerHTML = `<p style="color: red;">Erro ao criar usuário.</p>`;
        }
      });
    </script>
  </body>
</html>
Conclusão 🎉
Consumir APIs é uma habilidade fundamental para desenvolvedores front-end. Com as técnicas e exemplos apresentados neste guia, você está pronto para integrar dados dinâmicos em suas aplicações, melhorar a interatividade e oferecer uma experiência mais rica aos usuários. Lembre-se de seguir as boas práticas para garantir a eficiência e a segurança das suas aplicações. Continue explorando e experimentando com diferentes APIs para expandir suas capacidades e criar projetos cada vez mais robustos e interessantes.
Recursos Adicionais 📚
Esperamos que este artigo tenha sido útil para você! Se tiver dúvidas ou sugestões, deixe um comentário abaixo. Boas codificações! 👨💻👩💻