2009-06-05 8 views
7

मान लें कि हमारे पास कई संसाधनों का खुलासा करने वाला एक grails वेब एप्लिकेशन है।रीस्टफुल ग्रेल्स एप्लिकेशन: यूआरएलमैपिंग को ड्रिल करना

  • टैग
  • यूआरएल
  • उपयोगकर्ताओं

आवेदन एक शास्त्रीय वेब इंटरफेस है जो उपयोगकर्ताओं को और कुछ प्रशासन के साथ बातचीत की है। हम एप्लिकेशन से संसाधनों को रीस्टफुल एपीआई के माध्यम से ग्राहकों से बेनकाब करना चाहते हैं और हम नहीं चाहते हैं कि ऐप के उस हिस्से को हमारे पास पहले से मौजूद नियंत्रकों और कोड को अव्यवस्थित करना है। तो हम निम्नलिखित के साथ आए:

यदि वेब इंटरफ़ेस host/app_path/url/[list|show|create] प्रदान करता है तो हम चाहते हैं कि REST API /host/app_path/rest/url पर हो।

तो हम निम्नलिखित UrlMappings फ़ाइल के साथ समाप्त हो गया:

समस्या यह है, कि यह वास्तव में सबसे सूखी बात यहाँ नहीं है। यह बदतर हो जाता है क्योंकि हम टैग जैसे अधिक संसाधन जोड़ते हैं। वे बहुत समान कोड का अभी तक एक और तीन ब्लॉक करने के लिए अनुवाद होगा ...

गैर crud कार्यों विशिष्ट criterions और के साथ खोज तरह बातें हो जाएगा इस तरह के ...

हम एक पाश के साथ मानचित्रण बंद पैदा करने की कोशिश की , लेकिन सफलता के बिना। क्या हम यहां गलत रास्ते पर हैं?

"/rest/url/$id?"(resource:"urlRest") 

नीचे गतिविधि मानचित्रण करने के लिए HTTP विधि है कि इस urlRestController के लिए बनाने हैं:

उत्तर

7

मैं निम्नलिखित मानचित्रण की सिफारिश करेंगे

GET   show 
PUT   update 
POST  save 
DELETE  delete 

मैं देख रहा हूँ तुम क्यों मैप करने के लिए चाहते हो सकता है/बाकी/url पोस्ट को बचाने के लिए और/rest/url/id को अद्यतन करने के लिए दबाएं, लेकिन यह उन क्रियाओं के अर्थ के विरुद्ध चला जाता है। यूआरएल को अपडेट करने का एकमात्र तरीका एक नया यूआरएल और POST जोड़ने का एकमात्र तरीका होना चाहिए। जिस तरीके से आपने अपनाया है, वह काम करेगा और यदि आपका बाधा आपके वर्तमान नियंत्रक कोड को छूटे रखना है तो सबसे अच्छा तरीका हो सकता है। हालांकि, मेरा अनुमान है कि आप डिफॉल्ट मैपिंग को ठीक से संभालने के लिए पहले से ही नियंत्रक को कोड किया जा सकता है (अगर कोई आईडी नहीं है तो त्रुटि दें, अगर कोई आईडी नहीं है, तो सूची में रीडायरेक्ट दिखाएं)।

+1

अहह, पुट/पोस्ट चीज: डी – kungfoo

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