Nested dynamic params
Capture multiple path parameters by stacking bracketed segments and read them
via request.path
(e.g., routes/user/[id]/posts/[post].ts
).
Parameters are URL-decoded. For single-bracket segments like
[id]
or [post]
,
the param is guaranteed to exist if the route matched, so request.path.get("id")
and request.path.get("post")
are safe. Use .try(key)
only with optional
segments like [[name]]
.
TypeScriptroutes/user/[id]/posts/[post].ts
import route from "primate/route";
route.get(request => {
const id = request.path.get("id");
const post = request.path.get("post");
return `user ${id}, post ${post}`;
});
TypeScriptroutes/user/[id]/posts/[post].ts
import route from "primate/route";
route.get(request => {
const id = Number(request.path.get("id"));
if (Number.isNaN(id)) return new Response("Invalid id", { status: 400 });
return { id, post: request.path.get("post") };
});