Route-Handler

Full-Stack-Handler unter app/api/*/route.ts, Rewrites und Proxying für lokale Daemons.

Route-Handler definieren API-Endpunkte im Verzeichnis app mit den Web-APIs Request und Response.

Konvention

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

Exportiere GET, POST, PUT, PATCH, DELETE, HEAD oder OPTIONS. Handler laufen unter text dev, text start und jedem serverseitigen Deploy-Adapter, nach der Middleware. Cache GET-Handler mit der Route-Segment-Konfiguration.

Dynamische Handler

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 });}

params-Werte werden dekodiert. Ein Pfad mit einem kodierten Schrägstrich oder Backslash (%2F, %5C) erhält einen 400, übergib IDs, die / enthalten können, daher in einem Abfrageparameter oder kodiere sie als base64url.

Streaming

Gib für Server-Sent Events einen ReadableStream zurück:

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

Der Server leitet Anfragen an externe Ziele als Proxy weiter, sodass der Browser keine Cross-Origin-Anfrage stellt.

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

Proxy für lokale Daemons

Verwende proxy, um einen Prozess auf deinem Rechner zu erreichen:

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

So verbindet sich die OpenCode-Vorlage mit einem lokalen Server.

Diese Seite auf GitHub bearbeiten