Обработчики маршрутов

Full-stack обработчики app/api/*/route.ts, перезапись адресов и проксирование к локальному демону.

Обработчики маршрутов определяют API-эндпоинты в каталоге app с помощью веб-API 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