Aula 10 – Consumo de API REST 🌐
Nenhuma aplicação moderna vive isolada. Precisamos buscar dados de servidores e salvar informações. Para isso, usamos o protocolo HTTP e a biblioteca Axios.
🏗️ O que é uma API REST?
É uma forma padronizada de comunicação entre sistemas. Usamos Verbos HTTP para dizer o que queremos fazer:
- GET: Buscar dados.
- POST: Criar novos dados.
- PUT: Atualizar dados existentes.
- DELETE: Remover dados.
🚀 Usando Axios no Vue
O Axios é um cliente HTTP baseado em Promessas que facilita muito as requisições.
Exemplo de busca de dados no onMounted:
<script setup>
import { ref, onMounted } from 'vue'
import axios from 'axios'
const usuarios = ref([])
onMounted(async () => {
try {
const response = await axios.get('https://api.exemplo.com/users')
usuarios.value = response.data
} catch (error) {
console.error("Erro ao carregar usuários:", error)
}
})
</script>
📊 Fluxo da Requisição
sequenceDiagram
participant V as Vue (Client)
participant A as API (Server)
V->>A: GET /produtos
Note right of A: Processa no Banco de Dados
A-->>V: JSON { id: 1, nome: 'Teclado' }
Note left of V: Vue atualiza a Ref e a tela muda!
🧱 Organização: O padrão Service
Não é bom espalhar axios.get por todos os componentes. Criamos uma pasta services/ para isolar a lógica de API.
Service Pattern
Crie src/services/api.js para configurar a URL base e reutilizar as funções de chamada.
🧠 Tratamento de Erros e Loading
Experiência do Usuário (UX)
Sempre mostre um "Carregando..." enquanto a API não responde e trate erros com mensagens amigáveis para o usuário caso o servidor caia.
💻 Prática Sugerida
Utilize a JSONPlaceholder (uma API de testes gratuita) para listar posts de um blog falso em seu projeto Vue.
📝 Exercício
- Qual a vantagem do Axios sobre o
fetchnativo do navegador? - Por que usamos o
async/awaitao lidar com requisições HTTP? - O que acontece com a interface do Vue quando atribuímos o resultado da API a uma
ref?
🚀 Próxima Aula: Como compartilhar dados entre páginas sem ficar passando centenas de props? Conheça o Pinia!