Aula 12 - Requisições e Consumo de APIs 🌐
Objetivo
Objetivo: Aprender a conectar sua aplicação web a servidores externos, utilizando a Fetch API e o padrão async/await para buscar e enviar dados de forma assíncrona.
1. O que é uma API? 🔌
Uma API (Application Programming Interface) funciona como um garçom: você faz um "pedido" (request), ela leva ao "cozinheiro" (servidor) e traz a "comida" (dados) de volta para você. Geralmente, esses dados vêm no formato JSON.
2. Sincronismo vs Assincronismo ⏳
O JavaScript é Single Thread (faz uma coisa de cada vez). - Síncrono: O código espera uma tarefa pesada terminar para continuar. A página trava. - Assíncrono: O código inicia a tarefa (como buscar um dado na internet) e continua rodando outras coisas. Quando o dado chega, ele executa uma função de retorno.
3. Buscando Dados com fetch() 📥
O fetch é o método nativo do navegador para fazer requisições HTTP.
// Usando async/await (Forma Moderna)
async function buscarDados() {
try {
const resposta = await fetch('https://api.exemplo.com/dados');
const dados = await resposta.json();
console.log(dados);
} catch (erro) {
console.error("Erro ao buscar dados:", erro);
}
}
buscarDados();
4. Fluxo da Requisição 📊
graph LR
A[Seu App] -- 1. Request --> B[Internet]
B -- 2. Request --> C[API Externa]
C -- 3. Response JSON --> B
B -- 4. Response --> A
A -- 5. Atualiza o DOM --> D[Usuário vê os Dados]
5. Prática no Terminal (Simulação) 💻
$ // Simulando uma chamada de API
$ fetch('https://api.github.com/users/google')
$ .then(res => res.json())
$ .then(user => console.log(user.name));
> "Google"
[!IMPORTANT] Lembre-se que o
fetchretorna uma Promise. Por isso, precisamos usar oawaitou o.then()para esperar que ela seja resolvida.
6. Mini-Projeto: Consultor de Clima 🌤️
Vamos simular a busca de dados de clima.
1. Crie um botão "Ver Clima".
2. Quando clicado, faça um fetch para uma API de testes (como a JSONPlaceholder) ou apenas simule com um setTimeout.
3. Exiba uma mensagem "Carregando..." no DOM enquanto a resposta não chega.
4. Quando os dados chegarem, exiba a temperatura na tela.
7. Exercício de Fixação 📝
Básicos
- Qual a função do método
.json()após umfetch? - O que acontece se você tentar acessar um dado de uma API que caiu sem usar o
try/catch?
Intermediários
- Qual a diferença entre os métodos
GETePOSTem uma requisição? - Explique por que o uso de
async/awaitdeixa o código mais fácil de ler do que o uso de vários.then().
Desafio
- Buscador de Usuários do GitHub:
- Crie um input onde o usuário digita um nome de perfil do GitHub.
- Ao clicar em um botão, faça um
fetchparahttps://api.github.com/users/NOME_DIGITADO. - Exiba a foto (
avatar_url) e o nome do usuário no DOM. - Extra: Se o usuário não existir (Erro 404), exiba a mensagem: "Usuário não encontrado!".
Próxima Aula: Vamos organizar nosso código com Tratamento de Erros e Estados de Carregamento! 🛡️