I believe these two questions are very basic based on the posts I've read so far on the mailing list. I appreciate your insights into how to handle these correctly using undertow handlers (was thinking custom handlers).
First topic: a portion of the URI for my app is "dynamic" and changes as my program runs.
For example, with this URI:
/xd/cohort1/healthevents/examdata
the "cohort1" portion "appears" after my program starts.
Each cohort may have distinct processing - so this URI:
/xd/cohort0/healthevents/examdata
needs to be handled by code that may be entirely different from the first URI.
In a first approach, a single custom handler for the path /sd/* was configured:
rh0 = new RoutingHandler().post("/xd/*", new UndertowEventHttpHandler(config, posthandlers));
Undertow server = Undertow.builder().addHttpListener(ipPort, ipAddress).setHandler(rh0).build();
That examined the URI, validated the "cohort" piece, and then called a separate helper class directly (no dispatch, or async) to process the request.
Is this the best approach or is there a better way to handle this with Undertow?
(The out-of-the-box Path Template handler, for example, did not seem dynamic enough to handle this sort of URI.)
Second topic: the application can receive "GETS" and "POSTS" to the same URI.
A "GET" to /xd/cohort1/healthevents/examdata would return data where a
POST to /xd/cohort1/healthevents/examdata would expect the body of the message to have JSON to be stored.
How to best handle both GET and POST messages coming to the same URI with Undertow? I started to add an extra layer of abstraction - a generic handler that looked at the request method
HttpString hString = exchange.getRequestMethod();
but was not sure where to go from there...do I then call the specialized POST and GET handlers with .dispatch (deprecated except if I provide an Executor?) or is there a way to register two handlers for the same path...just different request methods?
Thank you,