מטפלי נתיבים

מטפלי ⁦Full-stack⁩ ב-⁦app/api/⁩*⁦/route.ts⁩, שכתובים וניתוב דרך פרוקסי לדמון מקומי.

מטפלי נתיבים מגדירים נקודות קצה של API בספרייה app באמצעות ממשקי ה-API של Web, ‏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" } });}

כללי Rewrite

השרת מתווך בקשות ליעדים חיצוניים, כך שהדפדפן אינו שולח בקשות למקור אחר.

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