HTTP API को कॉल करने के लिए क्या RESTful नहीं है? [बन्द है]


24

आप उन API को क्या कहेंगे जो HTTP- आधारित है, उन संसाधनों का हेरफेर करने के लिए संसाधनों और HTTP verbs (PUT, POST, DELETE, GET ...) के नाम के लिए URI का उपयोग करता है?

रॉय फील्डिंग की शिकायतों के अनुसार यह REST नहीं है, क्योंकि हाइपरमीडिया नहीं है।

आंतरिक रूप से, मेरी टीम में, हर कोई इसे "REST API" कहता है। मैं इसे "REST-like" कहता हूं, लेकिन यह वर्णनात्मक नहीं है और इसका अर्थ फ़र्ज़ी है। मैं इसके बारे में काफी उलझन में हूं, क्योंकि REST को लेकर बहुत असहमति है। मैं लौ युद्धों में हिस्सा नहीं लेना चाहता, लेकिन सिर्फ सही शब्दों का इस्तेमाल करता हूं।


6
काम पर आपका कितना समय आप वास्तव में प्रोग्रामिंग में बिताते हैं, और आपका कितना समय आप इस बात पर निर्णय लेते हैं कि किस शब्दावली का उपयोग करना है? माना कि आप एक महान उत्पाद जारी करते हैं लेकिन आपने कुछ आंतरिक दस्तावेजों में थोड़ी गलत शब्दावली का उपयोग किया है। क्या आपके ग्राहक देखभाल करेंगे?
ब्रैंडिन

3
आप इसे कैसे कहते हैं और जिसे आप कहते हैं, वह दो अलग चीजें हैं।
जेफ ओ

13
क्या यह सवाल वास्तव में स्नार्क और संदेहवाद पर वार करता है जो इसे टिप्पणियों में मिल रहा है? यह शायद ही एक उच्च स्तरीय, अक्सर इस्तेमाल की जाने वाली अवधारणा का उल्लेख करने के लिए एक सभ्य, व्यापक रूप से समझा रास्ता चाहते हैं।
बेन आरोनसन

6
@ ब्रैंडिन, शब्दों का मतलब होता है। जब तक मैं आपके दिमाग में एक यूएसबी स्टिक को हुक कर सकता हूं और अपना कोड तुरंत डाउनलोड कर सकता हूं, मुझे अपने अर्थ को संप्रेषित करने के लिए लेबल और शब्दावली का उपयोग करना होगा। अगर मैं "SOAP HTTP API" कहता हूं, तो इसका मतलब "REST HTTP API" से काफी अलग होगा। नामकरण एक कठिन समस्या है, और एक महत्वपूर्ण भी।
पॉल ड्रेपर

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

जवाबों:


43

इसे HTTP API कहें

यह HTTP मानकों के अनुरूप है, और इसके ऊपर कुछ और स्तरित नहीं है (जैसे SOAP)।

HTTP मानकों में संसाधनों, क्रियाओं, शीर्षलेखों, सामग्री बातचीत आदि को परिभाषित किया गया है।

REST (REpretational State Transfer) आवश्यकताओं के साथ एक वास्तुकला है जो मौजूदा HTTP मानकों के लिए उत्तरदायी है, लेकिन HTTP अपने आप ही काम करता है।


मेरे अनुभव में, "REST HTTP APIs" के 90% लोगों को खुद को "बस" HTTP API कहना चाहिए।

REST लेबल को छोड़ने में शर्म न करें। माइक्रोसर्विसेज और नॉन-रिलेशनल डेटाबेस की तरह, आपके पास कूल होने के लिए रैस्टफुल एपीआई होना जरूरी नहीं है। रॉय ने सबसे लंबे समय तक रहने वाले, सबसे पीछे संगत, नेटवर्कयुक्त एप्लिकेशन आर्किटेक्चर बनाने के लिए सेट किया जो वह कर सकते थे। उन्होंने अच्छा काम किया। लेकिन सब कुछ 40+ साल की संगतता की आवश्यकता नहीं है।


6
"मेरे अनुभव में, 90%" बाकी HTTP एपीआई "को खुद को" बस "एक HTTP एपीआई" कहना चाहिए। +1
अर्टुर गैस्पर

मैं और अधिक सहमत नहीं हो सकता। जहां मैं वर्तमान में काम करता हूं, हम एक तेजी से विकास चक्र में अत्याधुनिक एप्लीकेशन फ्रेमवर्क का उपयोग करके अत्याधुनिक क्लाइंट-सर्वर यूआई का निर्माण करते हैं। इसके बारे में Restful कुछ भी नहीं है; हम केवल POST का उपयोग करते हैं। यह ट्रेंडी नहीं है, लेकिन इसे काम मिल जाता है, और यह बहुत अच्छी तरह से हो जाता है। यह मैंने कभी देखा है सबसे साफ कोड में से कुछ है।
रॉबर्ट हार्वे

19

रिचर्डसन मैच्योरिटी मॉडल ऐसे ही चलते हैं

  1. हर जगह पोस्ट। एक एकल समापन बिंदु। (साबुन)
  2. हर जगह पोस्ट। एकाधिक समापन बिंदु। (संसाधन)
  3. HTTP VERBS। एकाधिक समापन बिंदु।
  4. 2 की तरह और संसाधनों के लिंक देता है। (RESTful)

इसलिए मॉडल के अनुसार मैं इसे एक वेबसर्विस कहूंगा जो कि रीचर्डसन स्तर 2 या उन रेखाओं के साथ कुछ के अनुरूप होगा ।

http://martinfowler.com/articles/richardsonMaturityModel.html


8

हाइपरमीडिया वास्तव में कभी भी REST जैसी API के साथ लोकप्रिय नहीं हुई - इस तथ्य से कि जब कोई API वास्तव में हाइपरमीडिया नेविगेशन लागू करता है, तो RESTful शब्द किसी अन्य "RESTful" वेब एपीआई से अलग करने के लिए पर्याप्त नहीं है। REST एक कैच-ऑल टर्म या किसी भी संसाधन-आधारित वेब APIs बन गया है और हाइपरमेडिया एपीआई जैसे नए नामों  को हाइपरमीडिया अवधारणा पर ध्यान केंद्रित करने के लिए गढ़ा गया है।

मैं वास्तव में गलत शब्दों के उपयोग की वकालत नहीं करना चाहता, लेकिन मुझे लगता है कि REST की सामान्य आधुनिक व्याख्या का अर्थ है कि ज्यादातर लोगों के लिए एक समान URL और HTTP क्रियाओं का उपयोग करना। यह सही नहीं है, लेकिन जो कोई भी फील्डिंग परिभाषा जानता है, उसे यह भी पता होना चाहिए कि कई अन्य नहीं करते हैं। दूसरी ओर, जो कोई भी केवल "RESTful" API को लागू करने के बारे में देखकर ही REST को जानता है, उसे नहीं पता होगा कि आप किस बारे में बात कर रहे हैं जब आप HATEOAS या ऑन-डिमांड कोड जैसे कम ज्ञात REST बाधाओं का उल्लेख करते हैं। क्षेत्ररक्षण इसे पसंद नहीं कर सकता है, लेकिन मुझे लगता है कि मूल परिभाषा * पर वापस आने के लिए देर हो चुकी है। और चलो ईमानदार रहें: यदि आप किसी को पहली बार उसके रेस्ट एपीआई के बारे में बात करते हुए सुनते हैं, तो आप तुरंत मान लेते हैं कि इसमें हाइपरमीडिया शामिल नहीं है, क्या आप नहीं?

रेस्टफुल की सही परिभाषा पर जोर देना आमतौर पर केवल अतिरिक्त भ्रम पैदा करता है। जैसे कि कई शब्दों के साथ, जिन्होंने समय के साथ अपना अर्थ बदल दिया है या कि जनता ने केवल गलत तरीके से अपनाया है, मैं सराहना करता हूं कि अगर किसी को मूल परिभाषा पता है, लेकिन मैं किसी को भी सही नहीं करूंगा जो REST की व्यापक आधुनिक व्याख्या का उपयोग कर रहा है।

* और उस मामले के लिए REST- जैसे गैर-हाइपरमीडिया एपीआई के लिए नई शर्तें स्थापित करने के लिए देर से। वैसे भी हमें उन्हें कैसे कॉल करना चाहिए? ... रितेश ?


1
गितूब के एपीआई में बहुत सारे हाइपरमीडिया हैं। मुझे नहीं पता कि यह कितना विशिष्ट है। मैं आपसे सहमत हूं कि 'रेस्टफुल' शब्द अधिक चीजों को अपनाने के लिए फील्डिंग के नियंत्रण से बच गया है।
dcorking

2

यह HTTP पर एक CRUD इंटरफ़ेस (क्रिएट, रीड, अपडेट, डिलीट) है।

मैं इस दावे का समर्थन करने के लिए किसी भी अधिकारियों के बारे में नहीं सोच सकता, इसलिए मुझे आशा है कि आपको अधिक और बेहतर उत्तर मिलेंगे।


4
कुछ RESTful उस परिभाषा को भी फिट करेगा।
ब्लरफाल

1
@Blrfl AFAICT कुछ रेस्टफुल APIS इसके सुपरसेट होंगे। यदि रिकॉर्ड हाइपरलिंक नहीं है तो यह फ़ील्डिंग की परिभाषा को पूरा नहीं करेगा।
dcorking

2

आप इसे पसंद कर सकते हैं, जिसे आप पसंद करते हैं, लोग (लगभग धार्मिक रूप से) REST 'कल्पना' के किसी भी भाग को देखते हैं, जिसका आप अनुसरण नहीं कर रहे हैं और इसका उपयोग उस बिंदु के रूप में करते हैं जो विकास के लिए बेहद हानिकारक है। लेकिन उस ने कहा, साधारण तथ्य यह है कि (लगभग) शून्य सेवाएं मौजूद हैं जो अपने एपीआई सेवा के लिए सही रीस्ट लागू करती हैं।

हमारी टीम में हमने अपना नाम दिया Stateless APIथा जबकि यह विकास में था क्योंकि हमारे पास एक विरासत स्टेटफुल और फंक्शनल SOAP एपीआई था जिसे हम बदल रहे थे (विरासत एपीआई में कभी भी एक सहमति और सार्थक नाम नहीं था या तो हम नामों में बहुत अधिक नहीं पकड़े गए थे। )।

अब इस परियोजना में केवल एक एपीआई है जिसे इसे बस कहा जाता है the <project> API। जब हम अंततः इसे बदल देते हैं, तो नया एपीआई बस के रूप में जाना जाएगा the new <project> API

इसे किसी भी फैंसी और वर्णनात्मक आंतरिक नाम देना लगभग तब तक निरर्थक है जब तक कि आपके पास इतने सारे एपीआई नहीं हैं कि आपको इसे बाकी हिस्सों से अलग करने की आवश्यकता है (जिस स्थिति में आपको संभवतः सभी अन्य को भी नाम बदलना चाहिए)।


जबकि मूल प्रश्न खराब था, यह उत्तर प्रश्न के उत्तर में ठोस प्रयास है
माइकल शॉ

2

आप इसे वेब एपीआई कह सकते हैं । यह एक बहुत ही व्यापक शब्द है लेकिन यह अन्य एपीआई प्रकार की परिभाषाओं के अर्थ के बारे में बताने से बच सकता है। HTTP एपीआई जैसे विकल्पों की तुलना में यह शब्द कम तकनीकी और सटीक है , लेकिन गैर-तकनीकी लोगों से बात करते समय इसका फायदा हो सकता है।

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.