Routing
Shovel uses a fast, standards-based router. Define routes and handlers to respond to HTTP requests.
Basic Routes
import { Router } from "@b9g/router";
const router = new Router();
// Static routes
router.route("/").get(() => new Response("Home"));
router.route("/about").get(() => new Response("About"));
// Route parameters
router.route("/users/:id").get((request, context) => {
return Response.json({ id: context.params.id });
});
self.addEventListener("fetch", (event) => {
event.respondWith(router.handle(event.request));
});
HTTP Methods
Chain multiple methods on a route:
router
.route("/users/:id")
.get(getUser)
.put(updateUser)
.delete(deleteUser);
Reading Request Data
router.route("/users").post(async (request) => {
const body = await request.json();
return Response.json({ received: body });
});
Returning Responses
// JSON
return Response.json({ message: "Hello" });
// HTML
return new Response("<h1>Hello</h1>", {
headers: { "Content-Type": "text/html" },
});
// Redirect
return Response.redirect("/new-path", 301);
Next Steps
- See Router Reference for advanced patterns
- Learn about Middleware for request processing