روٹ ہینڈلرز
فل اسٹیک app/api/*/route.ts ہینڈلرز، ری رائٹس اور مقامی ڈیمَن پراکسی۔
روٹ ہینڈلرز Web کی Request اور Response APIs کے ساتھ app ڈائریکٹری میں API اینڈ پوائنٹس متعین کرتے ہیں۔
کنونشن
export function GET(): Response { return Response.json({ status: "ok" });}GET، POST، PUT، PATCH، DELETE، HEAD یا OPTIONS ایکسپورٹ کریں۔ ہینڈلرز مڈل ویئر کے بعد text dev، text start اور ہر سرور ڈیپلائے اڈاپٹر پر چلتے ہیں۔ روٹ سیگمنٹ کی ترتیب کے ساتھ 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 ملتا ہے، اس لیے ایسی IDs جن میں / ہو سکتا ہے، کوئری پیرامیٹر میں پاس کریں یا انہیں 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" } });}Rewrite کے قواعد
سرور بیرونی منزلوں کے لیے پراکسی کا کام کرتا ہے، اس لیے براؤزر کوئی کراس اوریجن ریکویسٹ نہیں کرتا۔
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 ٹیمپلیٹ اسی طرح لوکل سرور سے کنیکٹ ہوتا ہے۔