gpt4 book ai didi

perl - 如何在 Mojolicious 中查找给定路径的路线名称?

转载 作者:行者123 更新时间:2023-12-02 22:02:58 26 4
gpt4 key购买 nike

当我解析 html 响应正文时,我想查找正文中找到的所有链接的路由名称。我使用下一个代码片段:

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

最佳答案

我只找到一个地方可以通过路径找到路线。即Mojolicious::Routes::Match并且没有其他方法可以做到这一点

在我看来,一件丑陋的事情是要求提供 Mojolicious::Controller目的。但 Controller 只需要做出决定:调度或不调度因为它有额外的信息来做出这个决定:这是要检查的数据 conditions

我认为问题是因为这里混合了两件事:

  1. 请求
  2. 路径

find应该只返回与给定参数匹配的所有路由:路径和方法。喜欢selectors does数组结果可能会被缓存(现在带有条件的路由不会被缓存)

然后调度员应该检查conditions针对每条路线,而不是 matcher 。这里每个条件都可以在右 Controller 的上下文中调用,而不是默认 Controller 。。这将修复 this issue 。大多数情况下,路由都有自己的 Controller 类,但没有?

在此行为得到修复之前问题中的示例是查找路线的最佳方式

关于perl - 如何在 Mojolicious 中查找给定路径的路线名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41467011/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com