Route handler

Handler full-stack app/api/*/route.ts, riscritture e proxy verso daemon locali.

I route handler definiscono endpoint API nella directory app con le API Web Request e Response.

Convenzione

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

Esporta GET, POST, PUT, PATCH, DELETE, HEAD o OPTIONS. Gli handler vengono eseguiti con text dev, text start e ogni adattatore di deploy server, dopo il middleware. Memorizza nella cache gli handler GET con la configurazione dei segmenti di route.

Handler dinamici

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

I valori di params vengono decodificati. Un percorso con una barra o una barra inversa codificata (%2F, %5C) riceve un 400, quindi passa gli ID che possono contenere / in un parametro di query oppure codificali come base64url.

Streaming

Restituisci un ReadableStream per gli eventi inviati dal server:

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

Rewrite

Il server fa da proxy per le destinazioni esterne, quindi il browser non effettua richieste cross-origin.

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

Proxy per daemon locali

Usa proxy per raggiungere un processo sulla tua macchina:

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

È così che il template OpenCode si connette a un server locale.

Modifica questa pagina su GitHub