HTTP, Fetch e CORS no Front-End: Como Consumir APIs com Segurança e Sem Dor de Cabeça
Consumir APIs é uma das habilidades mais valiosas em Programação Front-End: praticamente toda interface moderna precisa buscar dados, enviar formulários, autenticar usuários e atualizar partes da tela sem recarregar a página. Para fazer isso com confiança, é essencial entender três pilares: como funciona o HTTP, como usar fetch (ou alternativas) e como lidar com CORS — o famoso bloqueio “funciona no Postman, mas não no navegador”.
Neste artigo, você vai aprender o necessário para consumir APIs no front-end de forma correta, previsível e segura, com exemplos práticos e um checklist para depurar erros comuns.
Para aprofundar com trilhas completas, vale visitar a subcategoria de cursos de https://cursa.app/curso-desenvolvimento-web-online-e-gratuito e a categoria maior de https://cursa.app/cursos-online-informatica-ti-gratuito.
1) O básico do HTTP que todo front-end precisa dominar
HTTP é o protocolo que define como cliente (o navegador) e servidor trocam mensagens. Quando você “consome uma API”, você está fazendo requisições HTTP e recebendo respostas HTTP.
Métodos mais usados
GET (buscar dados), POST (criar/enviar), PUT/PATCH (atualizar) e DELETE (remover). Além deles, o navegador pode disparar um OPTIONS automaticamente, especialmente em cenários com CORS (já chegaremos lá).
Status codes (códigos de resposta)
Aprender a ler status codes é meio caminho para depurar bugs:
200–299: sucesso (ex.: 200 OK, 201 Created, 204 No Content).
300–399: redirecionamentos (ex.: 301, 302).
400–499: erro do cliente (ex.: 400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found, 429 Too Many Requests).
500–599: erro do servidor (ex.: 500 Internal Server Error).
Headers: o “contrato” invisível
Headers carregam metadados importantes: tipo do conteúdo, autorização, idioma, cache etc. Os mais comuns no dia a dia:
Content-Type: define o formato (ex.: application/json).
Accept: o que o cliente espera receber.
Authorization: tokens (Bearer) e credenciais.
Cache-Control: políticas de cache.
2) Consumindo APIs com fetch: exemplos práticos
O fetch é a API nativa do navegador para requisições. Ele retorna uma Promise, o que combina bem com async/await.
GET simples (buscar dados)
Exemplo de busca e conversão para JSON:
async function carregarProdutos() { const response = await fetch('https://api.exemplo.com/produtos'); if (!response.ok) { throw new Error(`Erro HTTP: ${response.status}`); } const data = await response.json(); return data; } POST com JSON (enviar dados)async function criarPedido(pedido) { const response = await fetch('https://api.exemplo.com/pedidos', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' }, body: JSON.stringify(pedido) }); if (!response.ok) { const texto = await response.text(); throw new Error(`Falha ao criar pedido (${response.status}): ${texto}`); } return response.json(); } Timeout e cancelamento (AbortController)async function buscarComTimeout(url, timeoutMs = 8000) { const controller = new AbortController(); const timer = setTimeout(() => controller.abort(), timeoutMs); try { const response = await fetch(url, { signal: controller.signal }); if (!response.ok) throw new Error(`HTTP ${response.status}`); return await response.json(); } finally { clearTimeout(timer); } } 3) CORS: por que o navegador bloqueia e como resolver do jeito certoasync function buscarPerfil(token) { const response = await fetch('https://api.exemplo.com/me', { headers: { 'Authorization': `Bearer ${token}`, 'Accept': 'application/json' } }); if (response.status === 401) { throw new Error('Não autorizado: faça login novamente.'); } if (!response.ok) { throw new Error(`Erro: ${response.status}`); } return response.json(); } Com cookies (credentials)await fetch('https://api.exemplo.com/me', { credentials: 'include' }); Atenção: para isso funcionar entre origens, o servidor precisa configurar CORS com Access-Control-Allow-Credentials: true e não pode usar Allow-Origin com * ao mesmo tempo.response.ok e trate respostas não-JSON quando necessário.
Aprenda CSS moderno com Flexbox e Grid para criar layouts responsivos, escaláveis e fáceis de manter em projetos front-end.Aprenda CSS moderno com Flexbox e Grid para criar layouts responsivos, escaláveis e fáceis de manter em projetos front-end.
+ de 9 milhões
de alunos
Certificado grátis e
válido em todo o Brasil
60 mil exercícios
gratuitos
4,8/5 classificação
nas lojas de apps
Cursos gratuitos em
vídeo, ebooks e audiobooks