routeRadix
import { routeRadix } from "jsr:@ende/http/unstable-route";function · experimental
function routeRadix(routes: Route[], defaultHandler: RequestHandler): RequestHandlerRoutes requests to different handlers based on the request path and method.
routes: Route[]Route configurations
defaultHandler: RequestHandlerDefault 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));