expo-api-routes
Ajuda seu agente a criar rotas de API no Expo Router. Permite que seu aplicativo se comunique com outros serviços. Útil para construir funcionalidades online.
O que ela faz
Essa ferramenta permite criar 'rotas de API' no seu aplicativo Expo. Rotas de API são como pequenos programas que rodam no servidor para lidar com tarefas que não podem ou não devem ser feitas diretamente no celular, como guardar segredos ou conversar com outros serviços.
Quando usar
- ✓Quando você precisa guardar informações secretas (senhas, chaves de API) que não podem ir para o celular.
- ✓Para fazer operações diretas em um banco de dados sem expor os detalhes.
- ✓Para se comunicar com outros serviços online (como OpenAI ou Stripe) de forma segura.
Exemplo do que pedir para a IA
“Crie uma rota de API para buscar dados de usuários e protegê-la com uma chave secreta.”
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
Você cria arquivos especiais com o nome `+api.ts` dentro da pasta `app`. Cada arquivo pode responder a diferentes tipos de pedidos (como ver dados, criar dados, etc.) usando funções como `GET`, `POST`, `PUT` e `DELETE`.
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 expo-api-routesOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/expo-api-routes/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.
Quando Usar Rotas de API
Use rotas de API quando precisar de:
- Segredos do lado do servidor — Chaves de API, credenciais de banco de dados ou tokens que nunca devem chegar ao cliente
- Operações de banco de dados — Consultas diretas ao banco de dados que não devem ser expostas
- Proxies de API de terceiros — Ocultar chaves de API ao chamar serviços externos (OpenAI, Stripe, etc.)
- Validação do lado do servidor — Validar dados antes de gravar no banco de dados
- Endpoints de Webhook — Receber callbacks de serviços como Stripe ou GitHub
- Limitação de taxa (Rate limiting) — Controlar o acesso no nível do servidor
- Computação pesada — Descarregar processamento que seria lento em dispositivos móveis
Quando NÃO Usar Rotas de API
Evite rotas de API quando:
- Os dados já são públicos — Use
fetchdireto para APIs públicas em vez disso - Nenhum segredo é necessário — Dados estáticos ou operações seguras para o cliente
- Atualizações em tempo real são necessárias — Use WebSockets ou serviços como Supabase Realtime
- CRUD simples — Considere Firebase, Supabase ou Convex para backends gerenciados
- Upload de arquivos — Use uploads diretos para armazenamento (URLs pré-assinadas do S3, Cloudflare R2)
- Apenas autenticação — Use Clerk, Auth0 ou Firebase Auth em vez disso
Estrutura de Arquivos
As rotas de API ficam no diretório app com o sufixo +api.ts:
app/
api/
hello+api.ts → GET /api/hello
users+api.ts → /api/users
users/[id]+api.ts → /api/users/:id
(tabs)/
index.tsx
Rota de API Básica
// app/api/hello+api.ts
export function GET(request: Request) {
return Response.json({ message: "Hello from Expo!" });
}
Métodos HTTP
Exporte funções nomeadas para cada método HTTP:
// app/api/items+api.ts
export function GET(request: Request) {
return Response.json({ items: [] });
}
export async function POST(request: Request) {
const body = await request.json();
return Response.json({ created: body }, { status: 201 });
}
export async function PUT(request: Request) {
const body = await request.json();
return Response.json({ updated: body });
}
export async function DELETE(request: Request) {
return new Response(null, { status: 204 });
}
Rotas Dinâmicas
// app/api/users/[id]+api.ts
export function GET(request: Request, { id }: { id: string }) {
return Response.json({ userId: id });
}
Tratamento de Requisições
Parâmetros de Consulta (Query Parameters)
export function GET(request: Request) {
const url = new URL(request.url);
const page = url.searchParams.get("page") ?? "1";
const limit = url.searchParams.get("limit") ?? "10";
return Response.json({ page, limit });
}
Cabeçalhos (Headers)
export function GET(request: Request) {
const auth = request.headers.get("Authorization");
if (!auth) {
return Response.json({ error: "Unauthorized" }, { status: 401 });
}
return Response.json({ authenticated: true });
}
Corpo JSON
export async function POST(request: Request) {
const { email, password } = await request.json();
if (!email || !password) {
return Response.json({ error: "Missing fields" }, { status: 400 });
}
return Response.json({ success: true });
}
Variáveis de Ambiente
Use process.env para segredos do lado do servidor:
// app/api/ai+api.ts
export async function POST(request: Request) {
const { prompt } = await request.json();
const response = await fetch("https://api.openai.com/v1/chat/completions", {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
},
body: JSON.stringify({
model: "gpt-4",
messages: [{ role: "user", content: prompt }],
}),
});
const data = await response.json();
return Response.json(data);
}
Defina variáveis de ambiente:
- Local: Crie o arquivo
.env(nunca envie para o Git) - Hospedagem EAS: Use
eas env:createou o painel do Expo
Cabeçalhos CORS
Adicione CORS para clientes web:
const corsHeaders = {
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, OPTIONS",
"Access-Control-Allow-Headers": "Content-Type, Authorization",
};
export function OPTIONS() {
return new Response(null, { headers: corsHeaders });
}
export function GET() {
return Response.json({ data: "value" }, { headers: corsHeaders });
}
Tratamento de Erros
export async function POST(request: Request) {
try {
const body = await request.json();
// Processar...
return Response.json({ success: true });
} catch (error) {
console.error("Erro na API:", error);
…
Perguntas frequentes
O que são 'rotas de API'?
São como 'portas' no seu aplicativo que, em vez de mostrarem uma tela, executam um código no servidor para realizar tarefas específicas, como buscar ou salvar informações de forma segura.
Onde eu coloco esses arquivos `+api.ts`?
Eles ficam dentro da pasta `app` do seu projeto, geralmente em uma subpasta chamada `api`.
Posso usar isso para tudo?
Não. Se os dados são públicos, ou se você precisa de atualizações em tempo real, ou se é algo simples como autenticação, existem outras ferramentas melhores. Essa é para tarefas que precisam de um 'cérebro' no servidor.
Detalhes
Descrição original do autor
Guidelines for creating API routes in Expo Router with EAS Hosting
Popularidade
- Estrelas no GitHub
- 48 mil
- Posição no ranking
- #2955
- 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
api-connector-builder
Faz seu agente construir novas conexões com APIs seguindo o padrão já existente. Use quando precisar adicionar mais uma integração sem criar um novo jeito de fazer.
affaan-m/ECC
api-design
Ajuda seu agente a projetar APIs REST seguindo as melhores práticas. É útil para definir como as APIs se comunicam, como os erros são mostrados e como organizar os dados.
affaan-m/ECC
backend-patterns
Ajuda seu agente com padrões de arquitetura do lado do servidor e otimização de banco de dados. É útil para construir ou revisar o código que roda no servidor.
affaan-m/ECC