【发布时间】:2025-12-29 18:55:07
【问题描述】:
当我解析 html 响应正文时,我想为正文中找到的所有链接查找路由名称。我使用下一个代码 sn-p:
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' );
【问题讨论】:
-
出于好奇,你什么时候用这个?您正在解析自己的应用程序网站吗?
-
@simbabque:是的,我愿意。实际上我在测试中使用它
-
@ikegami:我认为对于这种常见情况,子应该已经存在于 Mojolicious 中
-
对我来说听起来不是很常见!
-
@ikegami:Mojolicious 在收到请求时会创建可作为
$c->match访问的路由。所以某处它已经将path字符串转换为route对象。还有note about reversibility。要将路线渲染到路径中,我可以:$r->lookup( 'route_name' )->render({ foo => 'bar' })。但是我没有找到简单的方法来获取路径,除了那五行有问题的代码,我应该放入 sub
标签: perl mojolicious