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

app/api/health/route.tsts
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

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

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:

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

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.

text.config.tsts
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:

text.config.tsts
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ộ.

Sửa trang này trên GitHub