HTTP Server: Routing


An example of a HTTP server that handles requests with different responses based on the incoming URL.

URL patterns can be used to match request URLs. They can contain named groups that can be used to extract parts of the URL, e.g. the book ID.
const BOOK_ROUTE = new URLPattern({ pathname: "/books/:id" });

function handler(req: Request): Response {
Match the incoming request against the URL patterns.
  const match = BOOK_ROUTE.exec(req.url);
If there is a match, extract the book ID and return a response.
  if (match) {
    const id =;
    return new Response(`Book ${id}`);
If there is no match, return a 404 response.
  return new Response("Not found (try /books/1)", {
    status: 404,
To start the server on the default port, call `Deno.serve` with the handler.

Run this example locally using the Deno CLI:

deno run --allow-net

Try this example in a Deno Deploy playground: