Repository
Current version released
3 years ago
Dependencies
deno.land/x
Versions
Deploy Route
Experimental routing module for deno deploy 🦕
⚠️ Work In Progress! Expect breaking changes!
Usage
import { Context, Router } from "https://deno.land/x/deploy_route/mod.ts";
const router = new Router()
.use(async (event, next) => {
const time = Date.now();
await next();
console.log(
"[%s] %s %o +%sms",
event.request.method,
event.request.url,
event.params,
Date.now() - time,
);
})
.get<{ foo: string }>("/hello/world/:foo", async (event) => {
await event.respondWith(
new Response(`Hello ${event.params.foo}!\n`, {
headers: { "content-type": "text/plain" },
}),
);
})
.get("(.*)", async (event) => {
await event.respondWith(
new Response("Not found!\n", {
headers: { "content-type": "text/plain" },
status: 404,
}),
);
});
addEventListener("fetch", async (event) => {
await router.dispatch(new Context(event));
});
Nested Routers
const router1 = new Router();
const router2 = new Router();
router1.use("/foo/:bar", router2.routes());
router2.get<{ bar: string; baz: string }>("/:baz", async (event) => {
await event.respondWith(
new Response(`bar: ${event.params.bar}, baz: ${event.params.baz}\n`, {
headers: { "content-type": "text/plain" },
}),
);
});
addEventListener("fetch", async (event) => {
await router.dispatch(new Context(event));
});