Pri analyzovaní html body odpovede chcem nájsť názvy trás pre všetky odkazy nájdené v tele. Používam ďalší útržok kódu:
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 } );
potom $m->endpoint->name
dáva mi názov trasy.
Existuje však jednoduchší spôsob, ako nájsť názov trasy podľa danej cesty?
Hľadám niečo ako: $app->routes->find( "/api/v/users/146/link/7QRgs" )
ktorý by sa mal vrátiť user_hash_check
pretože mám ďalšiu trasu:
$guest->get( "/users/:id/link/:hash", "user_hash_check" )->to( "user#hash_check" );
odpovede:
-1 pre odpoveď č. 1Našiel som len jedno miesto, kde môžeme nájsť cestu po ceste. To je Mojolicious :: Routes :: Match a neexistuje iný spôsob, ako to urobiť
Jedna škaredá vec, ktorú tu myslím, je požiadavka na zásobovanie Mojolicious :: Controller objekt. Ovládateľ je však povinný robiť len rozhodnutie: odosielanie alebo odosielanie Pretože má ďalšie informácie, aby toto rozhodnutie: toto sú údaje na kontrolu podmienky
Problém, ktorý si myslím, je, že tu sú zmiešané dve veci:
- žiadosť
- cesta
a Nájsť by mali vrátiť všetky cesty porovnané s danými argumentmi: cesta a metóda. Páči sa mi to voličov Výsledok poľa môže byť uložený do vyrovnávacej pamäte (teraz sú trasy s podmienkami nie sú uložené vo vyrovnávacej pamäti)
potom odosielateľ mali by skontrolovať podmienky proti každej trase nie dohadzovač, Tu je možné zavolať každú podmienku v kontexte správneho kontrolóra a nie predvoleného, A to to napraví táto záležitosť, Trasy majú vo väčšine prípadov vlastnú triedu regulátorov nie?
Kým sa toto správanie neodstráni príklad v otázke je najlepší spôsob, ako nájsť trasy