routeRadix

import { routeRadix } from "jsr:@ende/http/unstable-route";

function · experimental

function routeRadix(routes: Route[], defaultHandler: RequestHandler): RequestHandler

Routes requests to different handlers based on the request path and method.

routes: Route[]

Route configurations

defaultHandler: RequestHandler

Default request handler that's returned when no route matches the given request. Serving HTTP 404 Not Found or 405 Method Not Allowed response can be done in this function.

Returns

Request handler

Example: Usage

import { route, type Route } from "@ende/http/unstable-route";
import { serveDir } from "@ende/http/file-server";

const routes: Route[] = [
  {
    // Matches all HTTP methods
    pattern: new URLPattern({ pathname: "/about" }),
    handler: () => new Response("About page"),
  },
  {
    pattern: new URLPattern({ pathname: "/users/:id" }),
    method: "GET",
    handler: (_req, params) => new Response(params.pathname.groups.id),
  },
  {
    // Matches any method — serves static files
    pattern: new URLPattern({ pathname: "/static/*" }),
    handler: (req: Request) => serveDir(req)
  },
  {
    method: ["GET", "HEAD"],
    pattern: new URLPattern({ pathname: "/api" }),
    handler: (req: Request) => new Response(req.method === 'HEAD' ? null : 'ok'),
  },
];

function defaultHandler(_req: Request) {
  return new Response("Not found", { status: 404 });
}

Ende.serve(route(routes, defaultHandler));

Source