7

私はCatalystの初心者で、同じエンドポイントにアクセスするために複数のチェーンを取得しようとしています(「description」サブルーチン)。例:

/object/fetch_by_id/*/description
/object/fetch_by_name/*/description
/object/fetch_by_xref/*/description

たとえば、3つの別々のエンドポイントのコードを記述する必要はなく、代わりに3つの異なるチェーンアクション間でエンドポイントを共有できるようにします。バックエンドAPIをラップしています。この例では、オブジェクトをさまざまなメソッドで取得できます。

理想的な解決策は次のとおりです。

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

または、チェーンごとに異なる記述サブルーチンを記述して、すべてが汎用記述サブルーチンを呼び出すこともできますが、より洗練されたソリューションがあれば素晴らしいでしょう。どんな助けでも大歓迎です!

4

2 に答える 2

5

既存の潜水艦を次のようなものにリファクタリングすることを検討しましたか?

/object/fetch/id/*/description
/object/fetch/name/*/description
/object/fetch/xref/*/description

エンドポイントの問題を解決すると同時に既存のコードを減らすことができる場合があります。「fetch」に2つの引数(lookup-methodとvalue、および最後までのチェーンの説明)を取得させます。

于 2011-08-23T00:00:54.627 に答える
2

触媒的な方法は、$c->forward

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');
}
于 2011-08-22T23:10:29.257 に答える