Manejadores de ruta

Manejadores full-stack app/api/*/route.ts, reescrituras y proxy al demonio local.

Los manejadores de ruta definen endpoints de API en el directorio app con las API web Request y Response.

Convención

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

Exporta GET, POST, PUT, PATCH, DELETE, HEAD u OPTIONS. Los manejadores se ejecutan en text dev, text start y cada adaptador de despliegue de servidor, después del middleware. Almacena en caché los manejadores GET con la configuración de segmentos de ruta.

Manejadores dinámicos

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

Los valores de params se decodifican. Una ruta con una barra o barra inversa codificada (%2F, %5C) recibe un 400, así que pasa los ID que puedan contener / en un parámetro de consulta o codifícalos como base64url.

Streaming

Devuelve un ReadableStream para los eventos enviados por el servidor:

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

Reescrituras

El servidor actúa como proxy para los destinos externos, por lo que el navegador no hace ninguna solicitud entre orígenes.

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

Proxy para un demonio local

Usa proxy para acceder a un proceso en tu equipo:

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

Así se conecta la plantilla de OpenCode a un servidor local.

Editar esta página en GitHub