2015-05-22 9 views
8

मैं स्प्रिंग डेटा जेपीए और स्प्रिंग डेटा आरईएसटी का उपयोग कर एक घटक आधारित सीआरयूडी अनुप्रयोग विकसित कर रहा हूं। मेरे पास कई घटक हैं। उदाहरण के लिए सिस्टम घटक में User मॉडल और UserRepository है। घटक पैकेज नामों से भिन्न होते हैं। com.example.app.<component_name>रेपॉजिटरी संसाधन के लिए बहु-सेगमेंट पथ का उपयोग करने के लिए स्प्रिंग डेटा आरईएसटी को कैसे अनुकूलित करें?

तो मेरा आरईएसटी एपीआई क्लीन क्लीनर बनाने के लिए, मुझे नीचे दिए गए एपीआई यूआरएल को लागू करने की आवश्यकता है।

host:8080/<component_name>/<model_collection_name>

उदाहरण के लिए

host:8080/system/users

मैं अपने भंडार

@RepositoryRestResource(collectionResourceRel = "users", path = "system/users") 
public interface UserRepository extends PagingAndSortingRepository<User, Long> { 
    ... 
} 

इस निम्नलिखित को बनाने वाला निम्नलिखित था, जब मैं गोटो http://localhost:8080

{ 
    "_links": { 
    "users": { 
    "href": "http://localhost:8080/system/users{?page,size,sort}", 
    "templated": true 
}, 
... 

लेकिन जब मैं गोटो http://localhost:8080/system/users

यह एक त्रुटि

शुक्र मई 22 17:56:37 IST 2015 हुई थी कोई अनपेक्षित त्रुटि (type = नहीं मिला, स्थिति = 404) देता है। कोई संदेश उपलब्ध

नोट: यदि मैं system-users के लिए पथ मैप किया गया तो यह ठीक काम करता है, लेकिन जब मैं इस तरह के system/users के रूप में रास्ते में एक / उपयोग करें, यह टूट जाता है और त्रुटि देता है।

उत्तर

10

टीएल; डी

समर्थित नहीं है।

विवरण

सामान्यतया: यूआरएल को डिजाइन करने पर ध्यान केंद्रित नहीं है। यूआरआई की संरचना परिभाषा के द्वारा एक बाकी ग्राहक के लिए कोई फर्क नहीं करना चाहिए:

कोई समय जो भी सर्वर या क्लाइंट सॉफ्टवेयर पता है या एक URI का अर्थ समझने की जरूरत है - वे केवल के माध्यम से एक नाली के रूप में कार्य जो संसाधन (एक मानव नामकरण प्राधिकरण) का निर्माता यूआरआई द्वारा पहचाने गए अर्थशास्त्र के साथ प्रतिनिधित्व को जोड़ सकता है।

(रॉय फील्डिंग से - स्थापत्य शैली और नेटवर्क-आधारित सॉफ्टवेर आर्किटेक्चर का डिजाइन - Section 6.2.4)

आप का पालन करें कि मापदंड, आप संबंध नाम चुनने की देखभाल, संसाधनों के लिए अभ्यावेदन डिजाइन आप आदि का पर्दाफाश करते हैं

उसने कहा, जो आप खोज रहे हैं वह वर्तमान में समर्थित नहीं है। अगर आपको लगता है कि यह सुविधा जोड़ने योग्य है (मुझे लगता है कि यह ऊपर दिए गए तर्क के कारण नहीं है), तो हमारे bug tracker में टिकट खोलने के लिए स्वतंत्र महसूस करें।

स्प्रिंग एमवीसी मानचित्रण के तरीके के कारण यह संभवतः कार्यान्वित करना मुश्किल है और विशेष रूप से एकवचन पथ खंडों और गैर-एकवचन वाले मैपिंग के संयोजन से कुछ अस्पष्टताएं हो सकती हैं। इससे सब कुछ असंभव है कि इस अनुरोध का पालन किया जाएगा।

+0

आपका तर्क मान्य लगता है, लेकिन फिर भी यह मेरी समस्या का समाधान नहीं करता है। मैं आवेदन की तरह एक विशाल बहु घटक ईआरपी विकसित करने पर तकनीकी व्यवहार्यता अध्ययन कर रहा हूं। किसी भी तरह से इस प्रश्न का उत्तर देने के लिए आपके द्वारा दिए गए समय और प्रयास के लिए धन्यवाद। यदि संभव हो तो कृपया भविष्य में रिलीज में इसे ठीक करने पर विचार करें, क्योंकि यह मेरे जैसे अन्य लोगों की मदद कर सकता है। मैंने जिरा में एक मुद्दा बनाया https://jira.spring.io/browse/DATAREST-555 –

+1

उस स्थिति में स्प्रिंग डेटा रेस्ट एपीआई संस्करण के लिए उपयुक्त नहीं है? – IllSc

+0

@IllSc आप अपने application.properties में spring.data.rest.base-path संपत्ति के माध्यम से बेस पथ को संशोधित करके अपने एपीआई को संस्करण बना सकते हैं। –

1

मुझे लगता है कि यह (या: एक समान) प्रश्न पहले से ही here स्टैक ओवरफ्लो पर उत्तर दिया गया था।

एक कस्टम रिपोजिटरी RestMvc कॉन्फ़िगरेशन कक्षा का उपयोग कर बेस यूरी सेट करें।

+1

उत्तर के लिए धन्यवाद। लेकिन यह मूल URL नहीं है जो मैं यहां बदलने की कोशिश कर रहा हूं। मैं वसंत-बूट में अपनी 'application.properties' फ़ाइल में 'spring.data.rest.baseUri = api' जोड़कर बस ऐसा कर सकता हूं। मुझे उस पथ में स्लेश करने की ज़रूरत है जिसे मैं बाकी लिंक के रूप में बेनकाब करने की कोशिश कर रहा हूं। –

+0

या मेरे प्रत्येक घटक के लिए शेष डेटा के लिए एकाधिक आधार यूरीज़ रखने का कोई तरीका है। –

+0

तो आपका लक्ष्य दो आरामपूर्ण एंडपॉइंट्स (घटक ए और बी, जैसे "सिस्टम") प्रदान करना है और उनमें से प्रत्येक के पास कई रिपॉजिटरीज़ (repA1, repA2, ..., जैसे "उपयोगकर्ता") हो सकते हैं ..? http: // localhost: 8080/ए/repA1 http: // localhost: 8080/ए/repA2 http: // localhost: 8080/बी/repB1 एक घटक ही किसी भी तर्क शामिल या यह सिर्फ एक है है अपना आवेदन तैयार करने का तरीका? –

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

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