frontend-api-integration-patterns
Ajuda seu agente a integrar o frontend com APIs. Usa padrões para lidar com erros, cancelamentos e atualizações de forma eficiente.
O que ela faz
Esta ferramenta ajuda a conectar seu site ou aplicativo com outros serviços online de forma mais confiável. Ela ensina a lidar com problemas comuns que acontecem quando a informação está sendo enviada e recebida, garantindo que tudo funcione bem e sem erros para o usuário.
Quando usar
- ✓Ao conectar seu site a um serviço de dados.
- ✓Quando você quer evitar que informações antigas apareçam na tela.
- ✓Para corrigir erros que acontecem ao carregar ou enviar dados.
Exemplo do que pedir para a IA
“Como faço para que meu site não mostre dados antigos quando estou buscando novas informações?”
Quer saber mais? Abra as seções abaixo.
Como usar
O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.
Link da skill
Mensagem pronta para colar
Como funciona
Ela organiza o código que se comunica com outros serviços, previne que pedidos duplicados sejam enviados e garante que, se uma conexão falhar, ela possa tentar novamente de forma inteligente.
Instalação
Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.
No terminal (Claude Code, Codex, Cursor), na pasta do projeto:
npx skills add sickn33/agentic-awesome-skills --skill frontend-api-integration-patternsOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/frontend-api-integration-patterns/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
Padrões de Integração de API Frontend
Visão Geral
Esta habilidade oferece padrões prontos para produção para integrar aplicações frontend com APIs de backend.
A maioria dos problemas de frontend não é causada por APIs difíceis de chamar, mas sim pelo manuseio incorreto de comportamento assíncrono — levando a condições de corrida, dados desatualizados, requisições duplicadas e má experiência do usuário.
Esta habilidade foca em correção, resiliência e experiência do usuário, não apenas em fazer as chamadas de API funcionarem.
Quando Usar Esta Habilidade
- Conectar aplicações frontend (React, React Native, Vue, etc.) a APIs de backend
- Integrar endpoints de ML/IA (
/predict,/recommend) - Lidar com dados assíncronos na UI
- Corrigir dados desatualizados, flickering na UI ou requisições duplicadas
- Projetar camadas de API frontend escaláveis
Padrões Principais
1. Camada de API (Separação de Responsabilidades)
Centralize a lógica da API e normalize os erros.
export class ApiError extends Error {
constructor(message, status, payload = null) {
super(message);
this.name = "ApiError";
this.status = status;
this.payload = payload;
}
}
export const apiClient = async (url, options = {}) => {
const res = await fetch(url, {
headers: { "Content-Type": "application/json" },
...options,
});
if (!res.ok) {
let payload = null;
try {
payload = await res.json();
} catch (_) {}
throw new ApiError(
payload?.message || "Request failed",
res.status,
payload
);
}
// handle empty responses safely (e.g. 204 No Content)
if (res.status === 204) return null;
const text = await res.text();
return text ? JSON.parse(text) : null;
};
2. Gerenciamento de Estado Seguro contra Condições de Corrida
Evite que respostas desatualizadas sobrescrevam dados recentes.
useEffect(() => {
let cancelled = false;
const load = async () => {
try {
setLoading(true);
setError(null);
const result = await getUser();
if (!cancelled) setData(result);
} catch (err) {
if (!cancelled) setError(err.message);
} finally {
if (!cancelled) setLoading(false);
}
};
load();
return () => {
cancelled = true;
};
}, []);
Use uma flag de cancelamento para lógica assíncrona que não seja fetch. Para requisições de rede, prefira AbortController.
3. Cancelamento de Requisição (AbortController)
Cancele requisições em andamento para evitar vazamentos de memória e atualizações desatualizadas.
useEffect(() => {
const controller = new AbortController();
const load = async () => {
try {
const data = await getUser({ signal: controller.signal });
setData(data);
} catch (err) {
if (err.name === "AbortError") return;
setError(err.message);
}
};
load();
return () => controller.abort();
}, [userId]);
4. Tentativa com Backoff Exponencial
Tente novamente apenas operações explicitamente seguras para repetição e falhas transitórias classificadas. O padrão executa uma tentativa. Não classifique exceções arbitrárias de programação ou parsing como erros de rede. Respeite o Retry-After do provedor e um prazo total no adaptador real; não ative este backoff simples para respostas de limite de taxa. O exemplo de predição POST intencionalmente não ativa tentativas, a menos que o contrato do backend garanta independentemente a segurança de repetição.
const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
const fetchWithBackoff = async (fn, retries = 3, delay = 300, replaySafe = false) => {
try {
return await fn();
} catch (err) {
const isAbort = err.name === "AbortError";
const isHttpError = typeof err.status === "number";
const isNetworkFailure = err.code === "NETWORK_ERROR";
const isRetryable = replaySafe && !isAbort &&
(isNetworkFailure || (isHttpError && err.status >= 500));
if (retries <= 0 || !isRetryable) throw err;
const nextDelay = delay * 2 + Math.random() * 100;
await sleep(nextDelay);
return fetchWithBackoff(fn, retries - 1, nextDelay, replaySafe);
}
};
5. Chamadas de API Debounced
Evite chamadas excessivas de API (por exemplo, campos de busca).
const useDebounce = (value, delay = 400) => {
const [debounced, setDebounced] = useState(value);
useEffect(() => {
const t = setTimeout(() => setDebounced(value), delay);
return () => clearTimeout(t);
}, [value, delay]);
return debounced;
};
6. Deduplicação de Requisições
Evite chamadas de API duplicadas entre componentes.
const inFlight = new Map();
…
Perguntas frequentes
O que é 'race condition'?
É quando duas ou mais ações acontecem ao mesmo tempo e a ordem em que terminam causa um resultado inesperado ou incorreto.
Por que cancelar requisições?
Para evitar que o aplicativo mostre informações desatualizadas ou quebras, especialmente se o usuário navegar para outra página antes da resposta chegar.
O que é 'retry strategy'?
É uma forma de tentar novamente uma ação que falhou, esperando um pouco mais a cada tentativa, para lidar com falhas temporárias de conexão.
Detalhes
Descrição original do autor
Production-ready patterns for integrating frontend applications with backend APIs, including race condition handling, request cancellation, retry strategies, error normalization, and UI state management.
Popularidade
- Estrelas no GitHub
- 48 mil
- Posição no ranking
- #3047
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
00-andruia-consultant
Ajuda seu agente a iniciar ou melhorar projetos de IA. Ele analisa código, sugere ferramentas e cria planos de ação em espanhol.
sickn33/agentic-awesome-skills
007
Faz seu agente realizar auditorias de segurança e modelagem de ameaças. É útil para proteger projetos contra ataques e vulnerabilidades.
sickn33/agentic-awesome-skills
10-andruia-skill-smith
Ajuda seu agente a criar ou melhorar ferramentas de IA. Ele define como as ferramentas funcionam, escreve a documentação e valida a estrutura.
sickn33/agentic-awesome-skills
20-andruia-niche-intelligence
Faz seu agente criar um resumo sobre um setor específico. É útil para entender o contexto, regras, padrões de uso e riscos de um projeto, usando fontes confiáveis.
sickn33/agentic-awesome-skills
Skills parecidas
angular-developer
Ajuda seu agente a criar código Angular e a dar conselhos sobre a estrutura do projeto. É útil para iniciar novos projetos, criar partes do código ou melhorar a performance e acessibilidade.
affaan-m/ECC
frontend-a11y
Ajuda seu agente a tornar interfaces web acessíveis para todos. Ele garante que sites e apps funcionem bem com leitores de tela e navegação por teclado.
affaan-m/ECC
frontend-patterns
Faz seu agente aplicar padrões modernos no desenvolvimento frontend. Ele otimiza performance, gerencia estado e segue boas práticas em React e Next.js.
affaan-m/ECC