/ / Как да намеря име на маршрут за даден маршрут в Mojolicious? - perl, mojolicious

Как да намерим името на маршрута за даден път в Mojolicious? - perl, mojolicious

Когато анализирам html response body, искам да намеря имена на маршрути за всички връзки, намиращи се в тялото. Използвам следващия кодов фрагмент:

    my $url =  Mojo::URL->new( $got );
my $method =  uc( $url->query->clone->param( "_method" ) || "GET" );
my $c =  $t->app->build_controller;
my $m =  Mojolicious::Routes::Match->new( root => $t->app->routes );

$m->find( $c => { method => $method,  path => $url->path } );

Тогава $m->endpoint->name ми дава името на маршрута.

Но има ли по-лесен начин да намерите името на маршрута по даден път?

Търся нещо като: $app->routes->find( "/api/v/users/146/link/7QRgs" ) който трябва да се върне user_hash_check защото имам следващ маршрут:

$guest->get( "/users/:id/link/:hash", "user_hash_check" )->to( "user#hash_check" );

Отговори:

-1 за отговор № 1

Намерих само едно място, където можем да намерим маршрут по пътека. Това е Mojolicious :: маршрути :: мач и няма друг начин да направите това

Едно грозно нещо, което ми се струва тук, е изискването за доставка Mojolicious :: Controller обект. Но администраторът се изисква само да взема решение: изпращане или не Защото има допълнителна информация, за да вземе това решение: това са данните, които трябва да се проверят условия

Проблемът, както мисля, е, че тук са смесени две неща:

  1. поискване
  2. път

И намирам трябва просто да върне всички маршрути, съвпадащи с дадени аргументи: път и метод. като селекторите Резултатът от масива може би е кеширан (сега маршрути с условия не са кеширани)

Тогава диспечер трябва да проверите условия срещу всеки маршрут не пасването, Тук може да се извика всяко условие в контекста на правилния контролер, а не по подразбиране, И това ще се реши този въпрос, Маршрутите в повечето случаи имат свой собствен контролер клас не?

Докато това поведение не бъде фиксирано примерът на въпроса е най-добрият начин за намиране на маршрути