क्या मुझे अपने RESTful API का वर्णन करने के लिए WADL का उपयोग करना चाहिए?


27

मैं एक ऐसी परियोजना को शुरू करने वाला हूं जो एक उचित रीस्टफुल दृष्टिकोण का व्यापक उपयोग करता है। यही है, यह HATEOAS का उपयोग करता है और एक ग्राहक द्वारा सामान्य अन्वेषण के लिए अनुमति देने वाले तरीके से संसाधनों की सेवा करता है।

मैं यह सुनिश्चित करना चाहूंगा कि मैं अपने समापन बिंदुओं का विवरण इस तरह से प्रदान करूं, जिससे क्लाइंट एप्लिकेशन को विविध भाषाओं में स्वचालित रूप से उत्पन्न किया जा सके। मैं समझता हूं कि SOAP आधारित वेब सेवाओं के लिए मैं WSDL का उपयोग कर सकता हूं और जाहिरा तौर पर WSDL2 है जो REST के साथ HTTP क्रियाओं की अधिक परिभाषा प्रदान करता है। हालाँकि मैं देख रहा हूँ कि बहुत सारे लेख इसकी उपयोगिता पर आगे-पीछे झूल रहे हैं।

तो, क्या मुझे बाहरी कोड जनरेटर को अपने वेब एप्लिकेशन के लिए जल्दी से क्लाइंट बनाने की अनुमति देने के लिए WADL का उपयोग करना चाहिए या एक बेहतर मानक है जो अपेक्षित है?


1
वाह - 2 दिन और सिर्फ हवा के गुबार के माध्यम से शांत सरसराहट ...
गैरी रोवे

बिलकुल नहीं। WADL संभवतः सबसे खराब एपीआई डॉक्यूमेंटर्स हैं जो मैं आज तक देख रहा हूं।
theCodingArt

जवाबों:


18

मेरी सलाह परेशान करने की नहीं है। WADL यह नहीं है कि व्यापक रूप से अपनाया गया है इस सवाल को स्टैक ओवरफ्लो पर देखें और कुछ मजबूत विचार हैं कि यह उस तरह के 'उचित' रीस्ट के साथ अच्छा फिट नहीं है जैसा कि आप वर्णन करते हैं, जैसा कि यहां एक और स्टैक ओवरफ्लो प्रश्न पर दिखाया गया है

WADL विवरण बनाने में समय लगता है (और ज्यादातर मैनुअल) और वे एक भंगुरता जोड़ते हैं जो HATEOAS से बचने के लिए डिज़ाइन किया गया है - यानी आपके पास कुछ अच्छी तरह से परिभाषित प्रवेश बिंदु होंगे लेकिन वास्तव में आपके क्लाइंट की आय तब अपारदर्शी लिंक द्वारा निर्धारित की जाती है, पूर्वनिर्धारित नहीं 'अनुबंध'।

यह कहने के लिए नहीं है कि आपको पूरी तरह से प्रलेखन, स्कीमा परिभाषा, आदि से दूर भागना चाहिए, हालांकि रेस्टिफेरियन स्पेक्ट्रम का एक छोर है जो आपको सुझाव देगा कि आप इतने उच्च स्तर के स्व-विवरण से संपर्क कर सकते हैं जिनकी आपको आवश्यकता नहीं है। मैंने इसे व्यवहार में मामला नहीं पाया है। कुछ ठोस काम करने वाले उदाहरणों में सभी अपरिचित डेवलपर की ज़रूरतें होनी चाहिए। और अपने स्वयं के एपीआई के लिए कुछ क्लाइंट को इसे आज़माएं (JQuery से आसान)। यह आपको एक अच्छा संकेत देगा कि क्या आप कुछ उपभोज्य निर्माण कर रहे हैं या नहीं।

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

आशा है कि आप शुरू करने में मदद करता है।


2
एक अच्छे उत्तर के लिए +1। यह मेरे बारे में होने वाले संदेह की पुष्टि करता है और मेरे वर्तमान दृष्टिकोण को फिर से संक्रमित करता है (अपने स्वयं के एपीआई का उपभोग करें यह देखने के लिए कि यह वास्तव में कितना बकवास है)।
गैरी रोवे

5

REST इंटरफेस की स्थिति एक इंटरेक्टिव ब्राउजर के अलावा किसी अन्य चीज से संचालित नहीं है। HATEOAS एक अच्छा सिद्धांत है, लेकिन यह उन इंटरफेसों की ओर जाता है जो बहुत दृढ़ता से लोगों को उन्मुख करते हैं और यह सेवा डेवलपर पर डाले जाने वाले उपयोगकर्ता इंटरफ़ेस के बोझ का नेतृत्व करने के लिए जाता है (जो आमतौर पर सेवा को स्वयं काम करने में बहुत व्यस्त होता है)।

WADL अपने आप में बहुत महान नहीं है; यह वास्तव में सेवा के शब्दार्थों को पर्याप्त रूप से कैप्चर नहीं करता है ताकि चीजों को उपकरण के लिए संभव बनाया जा सके। बेशक, यह सामान्य रूप से एक कठिन समस्या है। डब्लूएसडीएल शायद ही कभी पर्याप्त जानकारी को उजागर करता है, और इस समस्या में बहुत अधिक प्रयास किया गया है (यह पर्याप्त जानकारी संलग्न करना संभव है, लेकिन शायद ही कोई वास्तव में ऐसा करता है)।

फिर भी यह बता रहा है कि मेरे एक सहयोगी ने एक पुस्तकालय में काम करने में महीनों का समय बिताया है जो एक सेवा के लिए REST इंटरफ़ेस का उपयोग करता है, और WSDL- वर्णित इंटरफ़ेस उसी सेवा [*] के लिए स्वचालित रूप से सेकंड में समान गुणवत्ता के लिए स्वचालित रूप से टूल किया गया था; बाकी का रास्ता लिखने वाले कक्षाओं को लिखने के दिन के बारे में था। मेरा कूबड़ (एक सीमित नमूने के आकार के आधार पर) यह है कि आप एक जटिल सेवा में सभी भंगुरता से छुटकारा नहीं पा सकते क्योंकि सेवा का शब्दार्थ अनिवार्य रूप से समय के साथ विकसित होगा, और यह कि REST मनुष्यों के लिए ड्राइविंग इंटरफेस में बेहतर है क्योंकि SOAP के लिए बेहतर है इंटरफ़ेस लाइब्रेरी (नोट की लगभग सभी भाषाओं के लिए अच्छा WSDL / SOAP क्लाइंट टूलिंग है)। जब तक आपको दोनों को करने की लग्जरी नहीं मिल जाती है, जिस पर ध्यान केंद्रित करना चाहिए उस पर निर्भर करना चाहिए कि आप किस क्लाइंट के सबसे ज्यादा ध्यान रखते हैं।

मैं WADL में ज्यादा प्रयास नहीं करूंगा, लेकिन अगर आपका REST फ्रेमवर्क आपके लिए इसका उत्पादन करेगा (Apache CXF ऐसा करता है) तो इसे प्रदान नहीं करने का कोई विशेष कारण नहीं है। जो कोई भी आपके कोड को बंद करना चाहता है, वह WSDL + SOAP चाहता है।


[*] सवाल में सेवा के लेखक के रूप में, मैं यह सुनिश्चित करने के लिए कह सकता हूं कि दोनों इंटरफेस ने एक ही संचालन का समर्थन किया - एक सामान्य अंतर्निहित सार मॉडल था - और दोनों इंटरफ़ेस प्रकारों के लिए "प्राकृतिक" शैली में। सेवा की ओर, यह निश्चित रूप से ऐसा था कि कुछ चीजें REST और SOAP के साथ अन्य लोगों के लिए आसान थीं।


+1। मेरी कंपनी और उसके रिश्तेदार उस दौर में हैं "जिन्हें SOAP की जरूरत है, हमारे पास REST है!" हम अपनी SOAP सेवाओं के आसपास सरल REST आवरण बनाते हैं। सब कुछ सरल या स्पष्ट नहीं हो सकता। कभी-कभी यह कठिन और जटिल होता है। इसलिए हम 3 पार्टियों को एक दिलचस्प इंटरफ़ेस के साथ प्रस्तुत करते हैं जो मुट्ठी भर क्षेत्रों को परिभाषित कर रहे हैं, जिसमें वे रुचि रखते हैं। यह सुपर जटिल-लेकिन-लचीले इनपुट और आउटपुट दस्तावेजों के साथ SOAP सेवा को लपेटता है। हम WCF "दोहरे इंटरफ़ेस" सेवाओं का उपयोग करते हैं, जहां SOAP और REST दोनों समापन बिंदु कोड से उत्पन्न होते हैं (XmlSpy के साथ लिखे गए Xsd स्कीमा से उत्पन्न)।
रोबोजेएमएम

2

W3C एक के लिए एक औपचारिक सिफारिश की है बाकी प्रलेखन मानक के आधार पर डबल्यूएसडीएल 2.0 । यहाँ आईबीएम लेख से एक उद्धरण है :

वेब सेवा शब्द आम तौर पर SOAP और WS * मानकों का उपयोग करते हुए ऑपरेशन- या एक्शन-आधारित सेवाओं से जुड़ा होता है, जैसे कि WS- एड्रेसिंग और WS- सुरक्षा। REST वेब सेवाएँ शब्द आमतौर पर एक संसाधन-आधारित वेब सेवा वास्तुकला को संदर्भित करती है जो HTTP और XML का उपयोग करती है। इन वास्तु वेब सेवा शैलियों में से प्रत्येक का अपना स्थान है, लेकिन हाल तक डब्ल्यूएसडीएल मानक दोनों शैलियों का समान रूप से समर्थन नहीं करता था। WSDL 1.1 HTTP बाइंडिंग HTTP और XML के साथ संचार का वर्णन करने के लिए अपर्याप्त था, इसलिए WSDL के साथ REST वेब सेवाओं को औपचारिक रूप से वर्णन करने का कोई तरीका नहीं था। WSDL 2.0 का प्रकाशन, जिसे वर्ल्ड वाइड वेब कंसोर्टियम (W3C) की अनुशंसा के रूप में REST वेब सेवाओं के साथ डिजाइन किया गया था, का अर्थ है कि अब REST वेब सेवाओं का वर्णन करने के लिए एक भाषा है।


यह लेख 2008 में लिखा गया था, जबकि WADL केवल 2009 में प्रस्तुत किया गया था। इसलिए यह उचित अनुशंसा से दूर है। अब मैं उत्सुक हूं कि W3C WSDL 2.0 की सिफारिश के 10 साल बाद 2017 में राज्य क्या है ... WSDL का नवीनतम संस्करण आज भी वही 2007 WSDL 2.0 है। एक भी प्रगति (HTML, और HTTP की तुलना में) नहीं है। मुझे आश्चर्य है कि अगर यह एक अच्छी बात है?
हेंडी इरावन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.