Manipuladores de rota

Manipuladores full-stack app/api/*/route.ts, reescritas e proxy para daemon local.

Manipuladores de rota definem endpoints de API no diretório app com as APIs Web Request e Response.

Convenção

app/api/health/route.tsts
export function GET(): Response {  return Response.json({ status: "ok" });}

Exporte GET, POST, PUT, PATCH, DELETE, HEAD ou OPTIONS. Os manipuladores são executados em text dev, text start e em todos os adaptadores de deploy de servidor, após o middleware. Armazene em cache os manipuladores GET com a configuração de segmento de rota.

Manipuladores dinâmicos

app/api/sessions/[id]/route.tsts
export async function GET(_req: Request, { params }: { params: { id: string } }) {  const session = await db.sessions.find(params.id);  return session ? Response.json(session) : new Response("Not found", { status: 404 });}

Os valores de params são decodificados. Um caminho com uma barra ou barra invertida codificada (%2F, %5C) recebe um 400, então passe IDs que possam conter / em um parâmetro de consulta ou codifique-os como base64url.

Streaming

Retorne um ReadableStream para eventos enviados pelo servidor:

app/api/ticks/route.tsts
export function GET() {  let n = 0;  const stream = new ReadableStream({    start(c) {      setInterval(() => c.enqueue(`data: ${n++}\n\n`), 1000);    },  });  return new Response(stream, { headers: { "content-type": "text/event-stream" } });}

Rewrites

O servidor atua como proxy para destinos externos, então o navegador não faz requisições entre origens.

text.config.tsts
export default defineConfig({  rewrites: [{ source: "/api/opencode/:path*", destination: "http://127.0.0.1:4096/:path*" }],});

Proxy para daemon local

Use proxy para acessar um processo na sua máquina:

text.config.tsts
export default defineConfig({  proxy: { "/api/opencode": { target: "http://127.0.0.1:4096", changeOrigin: true } },});

É assim que o template do OpenCode se conecta a um servidor local.

Editar esta página no GitHub