Route handler
Handler full-stack app/api/*/route.ts, viết lại URL và chuyển tiếp qua daemon cục bộ.
Route handler định nghĩa các endpoint API trong thư mục app bằng API Request và Response của Web.
Quy ước
export function GET(): Response { return Response.json({ status: "ok" });}Export GET, POST, PUT, PATCH, DELETE, HEAD hoặc OPTIONS. Handler chạy trên text dev, text start và mọi adapter triển khai máy chủ, sau middleware. Lưu cache cho handler GET bằng cấu hình phân đoạn route.
Handler động
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 });}Các giá trị params được giải mã. Đường dẫn có dấu gạch chéo hoặc gạch chéo ngược đã mã hóa (%2F, %5C) nhận mã 400, nên truyền ID có thể chứa / qua tham số truy vấn hoặc mã hóa chúng dưới dạng base64url.
Truyền luồng
Trả về một ReadableStream cho sự kiện do máy chủ gửi:
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
Máy chủ làm proxy cho các đích bên ngoài, nên trình duyệt không gửi yêu cầu khác nguồn.
export default defineConfig({ rewrites: [{ source: "/api/opencode/:path*", destination: "http://127.0.0.1:4096/:path*" }],});Proxy cho daemon cục bộ
Dùng proxy để truy cập một tiến trình trên máy của bạn:
export default defineConfig({ proxy: { "/api/opencode": { target: "http://127.0.0.1:4096", changeOrigin: true } },});Đây là cách mẫu OpenCode kết nối với máy chủ cục bộ.