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
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
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:
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.
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:
export default defineConfig({ proxy: { "/api/opencode": { target: "http://127.0.0.1:4096", changeOrigin: true } },});Inilah cara template OpenCode terhubung ke server lokal.