fn indexHandler(): { status: Int, body: String } = httpOk("Welcome to Lux HTTP Framework!") fn listUsersHandler(): { status: Int, body: String } = { let user1 = jsonObject(jsonJoin([jsonNumber("id", 1), jsonString("name", "Alice")])) let user2 = jsonObject(jsonJoin([jsonNumber("id", 2), jsonString("name", "Bob")])) let users = jsonArray(jsonJoin([user1, user2])) httpOk(users) } fn getUserHandler(path: String): { status: Int, body: String } = { match getPathSegment(path, 1) { Some(id) => { let body = jsonObject(jsonJoin([jsonString("id", id), jsonString("name", "User " + id)])) httpOk(body) }, None => httpNotFound(jsonErrorMsg("User ID required")), } } fn healthHandler(): { status: Int, body: String } = httpOk(jsonObject(jsonString("status", "healthy"))) fn router(method: String, path: String, body: String): { status: Int, body: String } = { if method == "GET" && path == "/" then indexHandler() else if method == "GET" && path == "/health" then healthHandler() else if method == "GET" && path == "/users" then listUsersHandler() else if method == "GET" && pathMatches(path, "/users/:id") then getUserHandler(path) else httpNotFound(jsonErrorMsg("Not found: " + path)) } fn serveLoop(remaining: Int): Unit with {Console, HttpServer} = { if remaining <= 0 then { Console.print("Max requests reached, stopping server.") HttpServer.stop() } else { let req = HttpServer.accept() Console.print(req.method + " " + req.path) let resp = router(req.method, req.path, req.body) HttpServer.respond(resp.status, resp.body) serveLoop(remaining - 1) } } fn main(): Unit with {Console, HttpServer} = { let port = 8080 let maxRequests = 10 Console.print("========================================") Console.print(" Lux HTTP Router Demo") Console.print("========================================") Console.print("") Console.print("Endpoints:") Console.print(" GET / - Welcome message") Console.print(" GET /health - Health check") Console.print(" GET /users - List all users") Console.print(" GET /users/:id - Get user by ID") Console.print("") Console.print("Try:") Console.print(" curl http://localhost:8080/") Console.print(" curl http://localhost:8080/users") Console.print(" curl http://localhost:8080/users/42") Console.print("") Console.print("Starting server on port " + toString(port) + "...") Console.print("Will handle " + toString(maxRequests) + " requests then stop.") Console.print("") HttpServer.listen(port) Console.print("Server listening!") serveLoop(maxRequests) } let output = run main() with {}