perl 如何枚举Catalyst应用中的所有端点?

nuypyhwy  于 8个月前  发布在  Perl
关注(0)|答案(2)|浏览(57)

我有一个大型的Catalyst应用程序,并希望获得它支持的所有端点的列表(如果它能告诉我请求方法,会得到加分)。有没有简单的方法让Catalyst列出它们?

x9ybnkn6

x9ybnkn61#

Catalyst不知道完整的路径集。真正的调度路径是动态解析的,迭代DispatchType类,直到对match的调用做出有利的响应。
debug选项一次性枚举控制器允许的所有可能性。
这是一个遍历树的算法,它遍历在'/'找到的每个路由,并跟踪$controller->actions返回的每个后续路由。它不容易阅读,但你可以想象实现一个版本的_display_action_tables,它不只是打印到一个表,而是做其他事情。然后在实时应用程序中以$c为参数调用它,看看会发生什么!

6ljaweal

6ljaweal2#

可以使用Catalyst::Plugin::ActionPaths
https://www.perl.com/article/inspecting-catalyst/中有一篇文章展示了如何编写脚本来列出操作的示例。
使用Catalyst Context,您可以执行所有操作:

my $actions = $c->get_action_paths;
foreach $action (@$actions)
{
    print $action->{path};
}

相关问题