2011-08-22 7 views
7

मैं एक उत्प्रेरक नौसिखिया का एक सा हूँ, और मैं कई चेन ही endpoint ('विवरण' सबरूटीन) जैसे उपयोग करने के लिए प्राप्त करने के लिए कोशिश कर रहा हूँ:क्या कई श्रृंखलाओं को उत्प्रेरक में समान अंतराल साझा करने की अनुमति देने का कोई तरीका है?

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

मैं लिखने के लिए है नहीं करना चाहती उदाहरण के लिए 3 अलग-अलग अंतराल के लिए कोड और इसके बजाय एंडपॉइंट को तीन अलग-अलग जंजीर कार्रवाइयों के बीच साझा करने की अनुमति दें। मैं बैकएंड एपीआई लपेट रहा हूं और इस उदाहरण में वस्तु को विभिन्न विधियों के माध्यम से पुनर्प्राप्त किया जा सकता है।

आदर्श समाधान होगा:

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

या मैं प्रत्येक श्रृंखला है कि सभी फोन आनुवांशिक वर्णन सबरूटीन के लिए अलग अलग वर्णन बाद के चरणों लिख सकता है, लेकिन किसी भी अधिक सुरुचिपूर्ण समाधान बहुत अच्छा होगा! किसी भी मदद की सराहना की जानी चाहिए!

उत्तर

5

आप की तरह कुछ करने के लिए अपने मौजूदा बाद के चरणों पुनर्रचना माना जाता है: आप अंत बिंदु समस्या को हल कर सकते हैं दोनों

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

आप मिल सकती है और अपने मौजूदा कोड को एक ही समय में कम करें: 'fetch' दो तर्क लेते हैं: लुकअप-विधि और मान, और अंत में चेन विवरण।

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'); 
} 
संबंधित मुद्दे

 संबंधित मुद्दे