let count = ref 0 (* middleware *) let count_requests inner_handler request = count := !count + 1; inner_handler request let () = Dream.run @@ Dream.logger @@ count_requests @@ Dream.router [ Dream.get "/" (fun _ -> Dream.html "Hello, world!"); Dream.get "/count" (fun _ -> Dream.html (Printf.sprintf "Saw %i requests" !count)); Dream.get "/echo/:word" (fun request -> Dream.html (Dream.param request "word")); ]