معالجات المسارات

معالجات ⁦app/api/⁩*⁦/route.ts⁩ للتطبيقات المتكاملة، وإعادة الكتابة، والوكالة لخدمة خلفية محلية.

تحدد معالجات المسارات نقاط نهاية API في الدليل app باستخدام واجهتي الويب 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