کنترل‌گرهای مسیر

کنترل‌گرهای فول‌استک ⁦app/api/⁩*⁦/route.ts⁩، بازنویسی‌ها و پروکسی کردن دیمون محلی.

کنترل‌گرهای مسیر، نقاط پایانی API را در دایرکتوری app با APIهای وب Request و Response تعریف می‌کنند.

قرارداد

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

توابع GET، POST، PUT، PATCH، DELETE، HEAD یا OPTIONS را صادر کنید. کنترل‌گرها با اجرای دستورهای text dev و text start و در هر آداپتور استقرار سرور، پس از middleware اجرا می‌شوند. کنترل‌گرهای GET را با پیکربندی بخش مسیر در حافظهٔ نهان ذخیره کنید.

کنترل‌گرهای پویا

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

مقادیر params رمزگشایی می‌شوند. مسیری که اسلش یا بک‌اسلش کدگذاری‌شده (%2F، %5C) داشته باشد، پاسخ 400 دریافت می‌کند؛ بنابراین شناسه‌هایی را که ممکن است شامل / باشند، در یک پارامتر پرس‌وجو ارسال کنید یا آن‌ها را به‌صورت ⁦base64url⁩ کدگذاری کنید.

ارسال جریانی

برای رویدادهای ارسالی سرور، یک ReadableStream برگردانید:

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

بازنویسی‌ها

سرور درخواست‌ها به مقصدهای خارجی را پراکسی می‌کند، بنابراین مرورگر هیچ درخواست میان‌مبدأیی ارسال نمی‌کند.

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

پراکسی کردن دیمن محلی

برای دسترسی به یک فرایند روی دستگاه خود، از گزینهٔ proxy استفاده کنید:

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

قالب OpenCode به این روش به یک سرور محلی متصل می‌شود.

ویرایش این صفحه در GitHub