Gestionnaires de route
Gestionnaires full-stack app/api/*/route.ts, réécritures et proxy vers un démon local.
Les gestionnaires de route définissent des points de terminaison d’API dans le répertoire app avec les API Web Request et Response.
Convention
export function GET(): Response { return Response.json({ status: "ok" });}Exportez GET, POST, PUT, PATCH, DELETE, HEAD ou OPTIONS. Les gestionnaires s’exécutent avec text dev, text start et chaque adaptateur de déploiement côté serveur, après le middleware. Mettez les gestionnaires GET en cache avec la configuration des segments de route.
Gestionnaires dynamiques
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 });}Les valeurs de params sont décodées. Un chemin contenant une barre oblique ou une barre oblique inverse encodée (%2F, %5C) reçoit un 400, alors transmettez les identifiants susceptibles de contenir / dans un paramètre de requête ou encodez-les en base64url.
Diffusion en continu
Renvoyez un ReadableStream pour les événements envoyés par le serveur :
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" } });}Réécritures
Le serveur relaie les requêtes vers les destinations externes, le navigateur n’effectue donc aucune requête interorigine.
export default defineConfig({ rewrites: [{ source: "/api/opencode/:path*", destination: "http://127.0.0.1:4096/:path*" }],});Accès à un démon local par proxy
Utilisez proxy pour accéder à un processus sur votre machine :
export default defineConfig({ proxy: { "/api/opencode": { target: "http://127.0.0.1:4096", changeOrigin: true } },});C’est ainsi que le modèle OpenCode se connecte à un serveur local.