Je voudrais implémenter quelque chose comme des routes "dynamiques" dans mon application Mojolicious. J'ai des routes "statiques" prédéfinies et une table DB avec des alias d'URL: '/ alias' -> '/ URL'. Maintenant, je suis en train de définir des routes à la volée et cela ressemble à ceci:Routes "dynamiques" dans Mojolicious
before_dispatch => sub {
my ($self, $controller) = @_;
my $path = $controller->tx->req->url->path->to_string;
if (my $alias = $controller->app->model->alias->find({ alias => $path })) {
my $match = Mojolicious::Routes::Match->new(get => $alias->{uri});
my $routes = $controller->app->routes;
$match->match($routes);
$routes->route($path)->to($match->captures);
}
Mais y a-t-il un meilleur moyen?
Vous n'avez pas besoin de vérifier si une route existe si vous mettez le catchall au bas de votre liste de routes. Les routes sont essayées séquentiellement et la première correspondance est utilisée. –