/ / Jak znaleźć nazwę trasy dla danej ścieżki w Mojolicious? - perl, mojolicious

Jak znaleźć nazwę trasy dla danej ścieżki w Mojolicious? - perl, mojolicious

Kiedy parsuję treść odpowiedzi w html, chcę znaleźć nazwy tras dla wszystkich linków znalezionych w treści. Używam następnego fragmentu kodu:

    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 } );

Następnie $m->endpoint->name podaje mi nazwę trasy.

Ale czy istnieje prostszy sposób na odnalezienie nazwy trasy przez podaną ścieżkę?

Szukam czegoś takiego jak: $app->routes->find( "/api/v/users/146/link/7QRgs" ) który powinien powrócić user_hash_check ponieważ mam następną trasę:

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

Odpowiedzi:

-1 dla odpowiedzi nr 1

Znalazłem tylko jedno miejsce, w którym możemy znaleźć trasę po ścieżce. To jest Mojolicious :: Routes :: Match i nie ma innego sposobu, aby to zrobić

Jedną z brzydkich rzeczy, o której myślę, to wymóg dostarczania Mojolicious :: Controller obiekt. Ale kontroler jest tylko zobowiązany do podjęcia decyzji: wysyłka lub nie wysyłka Ponieważ ma dodatkowe informacje, aby podjąć tę decyzję: to dane do sprawdzenia warunki

Problem, jak myślę, wynika z tego, że są tu mieszane dwie rzeczy:

  1. Żądanie
  2. Ścieżka

I odnaleźć powinien po prostu zwrócić wszystkie trasy dopasowane do podanych argumentów: ścieżkę i metodę. Lubić selektory to robi Wynik tablicy może być buforowany (teraz trasy z warunkami nie są buforowane)

Następnie dyspozytor powinien sprawdzić warunki na każdą trasę, nie matcher. Tutaj każdy warunek może zostać wywołany w kontekście prawego kontrolera, a nie domyślnego. A to naprawi ten przypadek. Trasy w większości przypadków nie mają własnej klasy kontrolera?

Dopóki to zachowanie nie zostanie naprawione przykład w pytaniu to najlepszy sposób na znalezienie tras