एक सास स्टार्टअप के लिए, जिसमें मैं शामिल हूं, मैं एक अलग वेब एपीआई और विभिन्न प्लेटफार्मों पर क्लाइंट एप्लिकेशन के एक जोड़े का निर्माण कर रहा हूं, जो इसका उपभोग करते हैं। मुझे लगता है कि मुझे एपीआई मिल गया है, लेकिन अब मैं ग्राहकों की ओर रुख कर रहा हूं। जैसा कि मैं REST के बारे में पढ़ रहा हूं, मैं देखता हूं कि REST का एक महत्वपूर्ण हिस्सा खोज है , लेकिन वास्तव में खोज का दो अलग-अलग व्याख्याओं के बीच बहुत बहस होना प्रतीत होता है:
डेवलपर खोज : डेवलपर ने क्लाइंट में API विवरणों की प्रचुर मात्रा में प्रचुर मात्रा में संसाधन जैसे कि URI, क्वेरी पैरामीटर, समर्थित HTTP विधियों और अन्य विवरणों की खोज की है, जो उन्होंने डॉक्स ब्राउज़ करने और API की प्रतिक्रियाओं के साथ प्रयोग करने के माध्यम से खोजे हैं। इस प्रकार की खोज आईएमएचओ को कूल लिंकेज और एपीआई वर्जनिंग प्रश्न की आवश्यकता होती है, और एपीआई के लिए क्लाइंट कोड की हार्ड कपलिंग की ओर जाता है। आरपीसी के एक अच्छी तरह से प्रलेखित संग्रह का उपयोग करने से बेहतर नहीं है।
रनटाइम डिस्कवरी - क्लाइंट ऐप खुद ही वह सब कुछ पता लगाने में सक्षम होता है जिसकी उसे बहुत कम या कोई आउट-ऑफ-बैंड जानकारी नहीं होती है (संभवतः, केवल मीडिया का ही ज्ञान है कि एपीआई किस तरह का काम करता है।) लिंक गर्म हो सकते हैं। लेकिन एपीआई को बहुत कुशल बनाने के लिए, क्वेरी मापदंडों के लिए बहुत सारे लिंक टेम्प्लेटिंग की आवश्यकता लगती है, जो कि बैक-ऑफ-बैंड जानकारी को रेंगता है। संभवत: अन्य कठिनाइयां हैं जिनके बारे में मैंने अभी तक नहीं सोचा है। विकास में उस बिंदु के लिए मिल गया। लेकिन मुझे ढीले कपलिंग का विचार पसंद है।
रनटाइम डिस्कवरी REST की पवित्र कब्र लगती है, लेकिन मैं इस तरह के ग्राहक को लागू करने के तरीके के बारे में कीमती चर्चा कर रहा हूं। लगभग सभी REST स्रोत जिन्हें मैंने पाया है, डेवलपर खोज को मान लेते हैं। किसी को कुछ रनटाइम खोज संसाधनों का पता है? सर्वोत्तम प्रथाएं? वास्तविक कोड के साथ उदाहरण या पुस्तकालय? मैं एक क्लाइंट के लिए PHP (Zend फ्रेमवर्क) में काम कर रहा हूं। अन्य के लिए उद्देश्य-सी (आईओएस)।
क्या डेवलपर समुदाय में उपकरण और ज्ञान के वर्तमान सेट को देखते हुए रनटाइम खोज एक यथार्थवादी लक्ष्य है? मैं अपने ग्राहक को एक अपारदर्शी तरीके से यूआरआई के सभी का इलाज करने के लिए लिख सकता हूं, लेकिन यह सबसे कुशलता से कैसे किया जाए, यह एक सवाल है, खासकर कम बैंडविड्थ कनेक्शन पर। वैसे भी, यूआरआई समीकरण का केवल एक हिस्सा है। रनटाइम संदर्भ में लिंक के बारे में क्या है? विकल्प के बहुत सारे अनुरोध करने से अलग, किस तरीके से समर्थन किया जाता है, इसके बारे में संवाद कैसे करें?