package org.webpieces.router.api.simplesvr; import static org.webpieces.ctx.api.HttpMethod.*; import static org.webpieces.router.api.simplesvr.MtgRouteId.*; import org.webpieces.router.api.routing.Routes; import org.webpieces.router.api.routing.Router; public class MtgRoutes implements Routes { @Override public void configure(Router router) { //A typical CRUD list of routes is // 1. GET list users or GET /listusers // 2. GET add user page or GET /user // 3. GET edit user page or GET /user/{id} // 4. POST save user or POST /user // 5. GET display user or GET /displayuser (optional though as edit user shows the user in an editable mode) //ok, a few different scenarios // 1. /user/{var1}/{var2}/{var3} Controller.method() and controller accesses RequestLocal.getRequest().getParams().get("var1"); // 2. /user/{var1}/{var2}/{var3} Controller.method(var1, var2, var3) // 3. /user/{var1}?var2=xx&var3=yyy&cat=dog Controller.method(var1) and controller accesses RequestLocal.getRequest().getParams().get("var2"); // 4. /user?var1=xxx&var1=yyy Controller.method({xxx, yyy}) as an array // //ON TOP of this, do you maintain a separate structure for params IN THE PATH /user/{var1} vs in the query params /user/{var1}?var1=xxx // //AND ON TOP of that, we have multi-part fields as well with keys and values for POSTs router.addRoute(GET, "/something", "MeetingController.someExample", SOME_EXAMPLE); // router.addRoute(GET, "/listuser", "MeetingController.createUserForm", GET_CREATE_USER_PAGE); router.addRoute(POST, "/meeting", "MeetingController.postMeeting", POST_MEETING, false); //insecure router.addRoute(GET, "/meeting/{id}", "MeetingController.getMeeting", GET_SHOW_MTG); router.addRoute(GET, "/async", "MeetingController.asyncMethod", ASYNC_ROUTE); //router.addRoute(POST, "/{controller}/{action}", "{controller}.post{action}", null); router.setPageNotFoundRoute("MeetingController.notFound"); router.setInternalErrorRoute("MeetingController.internalError"); } }