Perl 是否有办法允许多条链共享Catalyst中的同一端点?

Perl 是否有办法允许多条链共享Catalyst中的同一端点?,perl,catalyst,chaining,endpoint,Perl,Catalyst,Chaining,Endpoint,我有点像Catalyst新手,我正试图让多条链访问同一个端点(“描述”子例程),例如: 例如,我不想为3个独立的端点编写代码,而是允许在三个不同的链接操作之间共享端点。我正在包装一个后端API,在本例中,可以通过不同的方法检索对象 理想的解决方案是: sub description : Chained('fetch_by_id','fetch_by_name','fetch_by_xref') PathPart('description') Args(0) ActionClass('REST')

我有点像Catalyst新手,我正试图让多条链访问同一个端点(“描述”子例程),例如:

例如,我不想为3个独立的端点编写代码,而是允许在三个不同的链接操作之间共享端点。我正在包装一个后端API,在本例中,可以通过不同的方法检索对象

理想的解决方案是:

sub description : Chained('fetch_by_id','fetch_by_name','fetch_by_xref') PathPart('description') Args(0) ActionClass('REST') {
    # code here
}

或者我可以为每个链编写不同的描述子例程,这些子例程都调用泛型描述子例程,但是任何更优雅的解决方案都会很棒!非常感谢您的帮助

催化剂的方法是使用


您是否考虑过将现有Sub重构为类似以下内容:

/object/fetch/id/*/description
/object/fetch/name/*/description
/object/fetch/xref/*/description
您可能会发现,您可以同时解决端点问题和减少现有代码:让“fetch”接受两个参数:查找方法和值,并将描述链到底

sub description : Chained('fetch_by_id') PathPart('description') Args(0) ActionClass('REST') {
    # code here
}

sub alias_1 : Chained('fetch_by_name') PathPart('description') Args(0) ActionClass('REST') {
    my ($self, $c) = @_;
    $c->forward('description');
}
/object/fetch/id/*/description
/object/fetch/name/*/description
/object/fetch/xref/*/description