मैं वसंत डेटा REST 2.1.4 का उपयोग कर रहा हूं। RELEASE।मैं स्प्रिंग डेटा आरईएसटी क्वेरी विधि संसाधन के लिए प्रक्षेपण कैसे लागू करूं?
मैं अपने जुड़ा हुआ संस्थाओं में से कुछ लौटने विस्फोट के लिए
- एक इकाई
Booking
, - अपनी बाकी भंडार (
CrudRepository
विस्तार)BookingRepository
- नाम और एक प्रक्षेपण
BookingDetails
(@Projection(name="details", types = Booking.class)
साथ एनोटेट) बनाया , जैसेResource
,Activity
,Applicant
आदि
ग्राहक को .../rest/bookings
के साथ सभी बुकिंग मिलती है और JSON प्रतिक्रिया में लिंक की गई संस्थाओं के लिंक शामिल होते हैं। यदि यह ?projection=details
जोड़ता है तो लिंक की गई इकाइयां विस्फोट और लौट जाती हैं। और यह बहुत अच्छा है।
अब मैं भंडार को यह कस्टम विधि जोड़ें:
List<Booking> findByApplicant(@Param("applicant") Person applicant);
जब ग्राहक .../rest/bookings/search/findByApplicant?applicant=5
साथ यह आह्वान, वहाँ details
प्रक्षेपण अनुरोध का कोई तरीका होने लगते हैं। बाद प्रयास अनदेखी कर रहे हैं:
- क्वेरी स्ट्रिंग
करने के लिए
&projection=details
जोड़ने बनाने विधि हमेशाBookingDetails
वापसी:List<BookingDetails> findByApplicant(@Param("applicant") Person applicant);
सारांश, कस्टम खोज विधियों (findBy*
) एक वापस कभी नहीं प्रक्षेपण। जब तक आप @RepositoryRestResource(excerptProjection = BookingDetails.class)
के साथ रिपॉजिटरी को एनोटेट नहीं करते हैं, लेकिन इससे कुछ समस्याएं होती हैं, तो पहले सभी क्लाइंट को हमेशा एक ही प्रक्षेपण का उपयोग करना होता है। हम उपयोगकर्ता को findBy*
विधियों के साथ भी अनुमानों का उपयोग करने की अनुमति कैसे दे सकते हैं?
एक यूआरएल जैसे .../rest/bookings/search/findByApplicant? Applicant = 5' बहुत ही विश्वसनीय नहीं है। '.../आराम/बुकिंग के बारे में क्या? आवेदक = 5'? –
हालांकि यह मूल पोस्टर प्रश्न से पूरी तरह से असंबंधित नहीं है, इस यूआरआई के बारे में क्या अनावश्यक है? सटीक होने के लिए, आप परिभाषा के अनुसार यूआरआई की शांति का न्याय नहीं कर सकते क्योंकि यह पूरी तरह से इस पर निर्भर करता है कि इसके माध्यम से संसाधन संसाधन HTTP अर्थशास्त्र का पालन करता है या नहीं। चाहे संसाधन की आईडी '/ foo' या'/conquer/the/world' पूरी तरह से अप्रासंगिक है। उस ने कहा, स्प्रिंग डेटा आरईएसटी ने ग्राहकों को संसाधनों पर नेविगेट करने के लिए हाइपर्मियाडिया का लाभ उठाया है, इसलिए यदि संसाधनों की आईडी भी कम हो जाती है जो प्रासंगिक नहीं है :)। –
यूआरएल आरपीसी की तरह गंध करता है। बेशक hypermedia एक अच्छी बात है। –