2011-08-22 18 views
7

tôi là một chút của một newbie Catalyst, và tôi đang cố gắng để có được nhiều chuỗi để truy cập đầu cuối cùng ('description' chương trình con) ví dụ:Có cách nào để cho phép nhiều chuỗi chia sẻ cùng một điểm cuối trong Catalyst không?

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

Tôi không muốn phải viết mã cho 3 điểm cuối riêng biệt ví dụ và thay vào đó cho phép điểm cuối được chia sẻ giữa ba hành động chuỗi khác nhau. Tôi đang gói một API phụ trợ và trong ví dụ này, đối tượng có thể được truy xuất thông qua các phương thức khác nhau.

Các giải pháp lý tưởng sẽ là:

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

Hoặc tôi có thể viết mô tả tàu ngầm khác nhau cho mỗi chuỗi rằng tất cả gọi mô tả chương trình con chung, nhưng bất kỳ giải pháp thanh lịch hơn sẽ là tuyệt vời! Bất kỳ trợ giúp nên được đánh giá rất nhiều!

Trả lời

5

Bạn đã xem refactoring tàu ngầm hiện có của bạn để một cái gì đó như:

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

Bạn có thể tìm thấy bạn có thể giải quyết cả hai vấn đề cuối cùng điểm và giảm mã hiện tại của bạn cùng một lúc: có 'lấy' lấy hai đối số: phương pháp tra cứu và giá trị và mô tả chuỗi cho đến cuối.

2

Cách xúc tác sẽ được sử dụng $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'); 
} 
Các vấn đề liên quan