Pular para o conteúdo
Skillpedia
APIs e servidores (backend)48 mil · #2955

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

https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/expo-api-routes/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/expo-api-routes/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
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-routes

Ou 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.md
Conteú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 fetch direto 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:create ou 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

repo: sickn33/agentic-awesome-skills

Popularidade

Estrelas no GitHub
48 mil
Posição no ranking
#2955
Licença
MIT
Atualizada em
15/10/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas