کنترلگرهای مسیر
کنترلگرهای فولاستک app/api/*/route.ts، بازنویسیها و پروکسی کردن دیمون محلی.
کنترلگرهای مسیر، نقاط پایانی API را در دایرکتوری app با APIهای وب Request و Response تعریف میکنند.
قرارداد
export function GET(): Response { return Response.json({ status: "ok" });}توابع GET، POST، PUT، PATCH، DELETE، HEAD یا OPTIONS را صادر کنید. کنترلگرها با اجرای دستورهای text dev و text start و در هر آداپتور استقرار سرور، پس از middleware اجرا میشوند. کنترلگرهای GET را با پیکربندی بخش مسیر در حافظهٔ نهان ذخیره کنید.
کنترلگرهای پویا
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 });}مقادیر params رمزگشایی میشوند. مسیری که اسلش یا بکاسلش کدگذاریشده (%2F، %5C) داشته باشد، پاسخ 400 دریافت میکند؛ بنابراین شناسههایی را که ممکن است شامل / باشند، در یک پارامتر پرسوجو ارسال کنید یا آنها را بهصورت base64url کدگذاری کنید.
ارسال جریانی
برای رویدادهای ارسالی سرور، یک ReadableStream برگردانید:
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" } });}بازنویسیها
سرور درخواستها به مقصدهای خارجی را پراکسی میکند، بنابراین مرورگر هیچ درخواست میانمبدأیی ارسال نمیکند.
export default defineConfig({ rewrites: [{ source: "/api/opencode/:path*", destination: "http://127.0.0.1:4096/:path*" }],});پراکسی کردن دیمن محلی
برای دسترسی به یک فرایند روی دستگاه خود، از گزینهٔ proxy استفاده کنید:
export default defineConfig({ proxy: { "/api/opencode": { target: "http://127.0.0.1:4096", changeOrigin: true } },});قالب OpenCode به این روش به یک سرور محلی متصل میشود.