On Wednesday, 30 April 2014 at 10:01:51 UTC, Rikki Cattermole
wrote:
Why can't stand-alone annotated function be a valid route?
Route is pretty much method + url + handler and first two can
be inferred by convention in many cases (as done in
vibe.web.rest & Co).
The only way I know of that doesn't result in a container is
registerRoutes!"mymodule"; Instead of registerRoute!MyRoute;
Well you need to specify this only once with root module (usually
app.d) supplied as a parameter. You can query all imported
modules recursively from it.
Now if I could get access to a list of all the modules and
hence all routes at CTFE then that wouldn't be an issue. Same
deal for models.
This can't be done with same guarantees as runtime reflection
because of separate compilation. Requirement to transitively to
import everything from root module is necessary. I don't see it
much of a burden though.
There is some benefits of having a container for routes however.
Being able to add UDAs to that group of routes. I.e. Don't
generate javascript, give them a name/grouping.
While its possible without it, its a bit more distinct.
There are definitely several benefits of having aggregated
compile-time known list of routes. Actually I have added it as
one of examples for my DConf talk just yesterday :) This list,
however, can possibly be built automatically via reflection
provided single root entry point.
I think good flexible framework should provide user both options
and infer as much as possible by convention.