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

时间:2019-02-28 22:14:42

标签: perl catalyst

我有一个大型的Catalyst应用程序,想要获取它支持的所有端点的列表(如果可以告诉我请求方法,则可以得到奖励积分)。有什么简单的方法可以让Catalyst列出它们?

1 个答案:

答案 0 :(得分:0)

Catalyst不知道完整的路径集。真正的分发路径是动态解析的,它通过DispatchType类进行迭代,直到一个人对match的调用做出满意的响应为止。

debug选项对控制器允许的所有可能性进行一次枚举。如果要对此进行干预,则必须查看Catalyst::Dispatcher::_display_action_tables

这是一种遍历树的算法,它遍历在'/'处找到的每条路由,并遵循$controller->actions返回的每条后续路由。这不容易阅读,但是可以想象实现一个_display_action_tables版本,该版本不仅可以打印到表格,还可以执行其他操作。然后以$ c作为参数在实时应用程序中调用它,看看会发生什么!