Hi All,
I'm just starting with Dancer, pointers to applicable documentation are more than welcome if you don't have time to give an extended answer.
I sometimes am in the need of refactoring code that should be shared between different routes. As an example, I could have a POST route '/do-operation' that has to perform some operations and then generate a page exactly as if a GET route '/default' had been called.
I understand that it's not possible (not advisable) to call a route from another route, so the obvious solution that comes to mind is to create a function that encapsulates all that the '/default' route action is supposed to do, then call it from the two different routes:
sub default {
# ...
}
get '/default' => \&default;
post '/do-operation' => sub {
# do whatever I need, then...
return default();
}
Is this approach save and future-proof? In particular, what are the constraints of using the different Dancer functions - e.g. var, session, splat, ... - inside a sub that isn't "installed" as a route action in the way all the examples report?
To give a bit of perspective to my concern, I heard a lot about Devel::Declare and related stuff that plug in during the parsing phase, and I wouldn't like to incur in problems by not adhering to some "best practice", whichever it is (e.g. use HTTP redirections to force the browser to send a new request for '/default', but I would like to avoid this).
Thank you,
Flavio.