package examples.routing; import com.vtence.molecule.WebServer; import com.vtence.molecule.routing.DynamicRoutes; import java.io.IOException; /** * <p> * This is a simple example showing how to define routes and how to use route patterns containing named * parameters. Named parameters are accessible as normal request parameters. * </p> * <p> * We want to route incoming requests based on their paths and verbs, so we provide route patterns as strings. * If your matching logic is more sophisticated, you can also provide custom matchers. * </p> */ public class RoutingExample { public void run(WebServer server) throws IOException { // We start the server by providing a set of routes, which creates a router to dispatch // requests to different endpoints. server.start(new DynamicRoutes() {{ // Routes are matched in the order they are defined. The first one that matches the request will be // invoked. // Route all requests to the root path - ignoring the verb - to an endpoint that responds with "Welcome!" map("/").to((request, response) -> response.done("Welcome!")); // Route POST requests to /login to an endpoint that simulates login. It simply reads the username // from the request parameters and redirects to /users/username. post("/login").to((request, response) -> { String username = request.parameter("username"); response.redirectTo("/hello/" + username) .done(); }); // Route GET requests to /hello/username to an endpoint that renders and HTML page with // a greeting message for our user. We use a route pattern that includes a named segment (:username). // The bound parameter is available as a request parameter. get("/hello/:username").to((request, response) -> { response.contentType("text/html"); response.done( "<html>" + "<body>" + "<h3>Hello, " + request.parameter("username") + "</h3>" + "</body>" + "</html>" ); }); }}); } public static void main(String[] args) throws IOException { RoutingExample example = new RoutingExample(); // Run the default web server WebServer webServer = WebServer.create(); example.run(webServer); System.out.println("Access at " + webServer.uri()); } }