Route handler

Handler app/api/*/route.ts full-stack, rewrite, dan proksi daemon lokal.

Route handler mendefinisikan endpoint API di direktori app dengan API Web Request dan Response.

Konvensi

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

Ekspor GET, POST, PUT, PATCH, DELETE, HEAD atau OPTIONS. Handler berjalan pada text dev, text start dan setiap adapter deploy server, setelah middleware. Simpan handler GET dalam cache dengan konfigurasi segmen route.

Handler dinamis

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

Nilai params didekode. Path dengan garis miring atau garis miring terbalik yang dikodekan (%2F, %5C) mendapat 400, jadi teruskan ID yang bisa memuat / dalam parameter kueri atau kodekan sebagai base64url.

Streaming

Kembalikan ReadableStream untuk server-sent events:

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

Server memproksikan tujuan eksternal, sehingga browser tidak membuat permintaan lintas origin.

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

Proksi daemon lokal

Gunakan proxy untuk mengakses proses di mesin Anda:

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

Inilah cara template OpenCode terhubung ke server lokal.

Edit halaman ini di GitHub