क्वेरी पैरामीटर और पथ पैरामीटर के बीच मूलभूत अंतर है। यह इस प्रकार है:
www.your_domain?queryparam1=1&queryparam2=2
- क्वेरी पैरामीटर।
www.your_domain/path_param1/entity/path_param2
- पथ पैरामीटर।
मुझे आश्चर्य हुआ कि स्प्रिंग एमवीसी दुनिया में बहुत सारे लोग एक दूसरे के लिए भ्रमित करते हैं। जबकि खोज के लिए क्वेरी पैरामीटर अधिक मापदंड की तरह हैं, पथ पैरामीटर सबसे अधिक संभावना एक संसाधन की पहचान करेंगे। यह कहने के बाद, इसका मतलब यह नहीं है कि आपके URI में कई पथ पैरामीटर नहीं हो सकते हैं, क्योंकि संसाधन संरचना को नेस्टेड किया जा सकता है। उदाहरण के लिए, मान लें कि आपको किसी विशिष्ट व्यक्ति के विशिष्ट कार संसाधन की आवश्यकता है:
www.my_site/customer/15/car/2
- 15 वें ग्राहक की दूसरी कार की तलाश।
सभी पाथ पैरामीटर्स को मैप में डालना क्या usecase होगा? पथ पैरामीटर में एक "कुंजी" नहीं होती है जब आप एक URI को देखते हैं, तो मानचित्र के अंदर की कुंजी आपके @ मैपिंग एनोटेशन से ली जाएगी, उदाहरण के लिए:
@GetMapping("/booking/{param1}/{param2}")
HTTP / REST परिप्रेक्ष्य पथ मापदंडों से वास्तव में मानचित्र पर प्रोजेक्ट नहीं किया जा सकता है। यह सब स्प्रिंग के लचीलेपन और किसी भी डेवलपर्स को समायोजित करने की उनकी इच्छा के बारे में है, मेरी राय में।
मैं कभी भी पथ मापदंडों के लिए मानचित्र का उपयोग नहीं करूंगा, लेकिन यह क्वेरी मापदंडों के लिए काफी उपयोगी हो सकता है।
@RequestParam MultiValueMap<String, String>