RESTful इंटरफ़ेस डिज़ाइन करते समय, अनुरोध प्रकारों के शब्दार्थ को डिज़ाइन के लिए महत्वपूर्ण माना जाता है।
- प्राप्त करें - सूची संग्रह या तत्व को पुनः प्राप्त करें
- PUT - संग्रह या तत्व को बदलें
- पोस्ट - संग्रह या तत्व बनाएँ
- DELETE - ठीक है, erm, संग्रह या तत्व को हटा दें
हालाँकि, यह "खोज" की अवधारणा को कवर नहीं करता है।
उदाहरण के लिए, नौकरी की खोज साइट का समर्थन करने वाली वेब सेवाओं का एक सूट डिजाइन करने में आपको निम्नलिखित आवश्यकताएं हो सकती हैं:
- अलग-अलग जॉब एडवर्ट करें
- को प्राप्त होता है
domain/Job/{id}/
- को प्राप्त होता है
- नौकरी का विज्ञापन बनाएँ
- पोस्ट करने के लिए
domain/Job/
- पोस्ट करने के लिए
- जॉब एडवर्ट को अपडेट करें
- करने के लिए PUT
domain/Job/
- करने के लिए PUT
- नौकरी का विज्ञापन हटाएं
- DELETE को
domain/Job/
- DELETE को
"सभी नौकरियां प्राप्त करें" भी सरल है:
- को प्राप्त होता है
domain/Jobs/
हालांकि, नौकरी "खोज" इस संरचना में कैसे आती है?
आप दावा कर सकते हैं कि यह "सूची संग्रह" की भिन्नता है और इसे इस प्रकार लागू किया जा सकता है:
- को प्राप्त होता है
domain/Jobs/
हालाँकि, खोज जटिल हो सकती है और एक लंबी GET स्ट्रिंग उत्पन्न करने वाली खोज का उत्पादन करना पूरी तरह से संभव है। यही है, यहाँ एक SO प्रश्न का संदर्भ देते हुए, लगभग 2000 वर्णों की तुलना में लंबे समय तक GET स्ट्रिंग्स का उपयोग करने के मुद्दे हैं।
एक उदाहरण एक मुखर खोज में हो सकता है - "नौकरी" उदाहरण जारी रखना।
मैं पहलुओं पर खोज करने की अनुमति दे सकता हूं - "प्रौद्योगिकी", "नौकरी का शीर्षक", "अनुशासन" के साथ-साथ मुक्त-पाठ कीवर्ड, नौकरी की आयु, स्थान और वेतन।
एक द्रव उपयोगकर्ता इंटरफ़ेस और बड़ी संख्या में तकनीकों और नौकरी के शीर्षक के साथ, यह संभव है कि एक खोज बड़ी संख्या में पहलू विकल्पों को शामिल कर सके।
सीवी के लिए इस उदाहरण को दोहराएं, नौकरियों के बजाय, और भी अधिक पहलुओं को लाएं, और आप बहुत आसानी से चुने गए सौ पहलुओं के साथ एक खोज की कल्पना कर सकते हैं, या यहां तक कि सिर्फ 40 पहलुओं में से प्रत्येक 50 वर्ण लंबा हो सकता है (जैसे नौकरी के शीर्षक, विश्वविद्यालय के नाम, उदाहरण नियोक्ता के नाम)।
उस स्थिति में यह सुनिश्चित करने के लिए एक PUT या POST को स्थानांतरित करना वांछनीय हो सकता है ताकि यह सुनिश्चित हो सके कि खोज डेटा सही तरीके से भेजा जाएगा। उदाहरण के लिए:
- पोस्ट करने के लिए
domain/Jobs/
लेकिन शब्दार्थ यह कि एक संग्रह बनाने के लिए एक निर्देश है।
आप यह भी कह सकते हैं कि आप इसे एक खोज के निर्माण के रूप में व्यक्त करेंगे:
- पोस्ट करने के लिए
domain/Jobs/Search/
या (नीचे दिए गए बर्नग्राम द्वारा सुझाए गए)
- पोस्ट करने के लिए
domain/JobSearch/
शब्दशः यह समझ में आ सकता है, लेकिन आप वास्तव में कुछ भी नहीं बना रहे हैं, आप डेटा के लिए अनुरोध कर रहे हैं।
इसलिए, शब्दार्थ यह एक GET है , लेकिन GET को उस समर्थन की गारंटी नहीं है जो आपको चाहिए।
तो, सवाल यह है - जितना संभव हो सके Restful design को सही रखने की कोशिश करते हुए, यह सुनिश्चित करते हुए कि मैं HTTP की सीमाओं के भीतर रख रहा हूँ, किसी खोज के लिए सबसे उपयुक्त डिज़ाइन क्या है?
domain/Jobs?keyword={keyword}
। यह मेरे लिए ठीक काम करता है :) मेरी आशा है, किSEARCH
क्रिया एक मानक बन जाएगी। programmers.stackexchange.com/questions/233158/…