यह सुनिश्चित करने के लिए कि आप इसे आरपीसी में नहीं बदल चुके हैं, एक विश्वसनीय इंटरफेस स्थापित करने से बचने के लिए आपको क्या चाहिए?आराम से वेब सेवाएं
उत्तर
है:
- अपने आवेदन डिजाइन hypertext-driven (हाइपरमीडिया आवेदन राज्य के इंजन के रूप में - HATEOAS) किया जाना है।
- संसाधनों की पहचान करने और उनके प्रतिनिधित्व के लिए मीडिया प्रकारों को क्राफ्ट करने के अपने अधिकांश समय और प्रयास खर्च करें।
- पूरे यूआरआई को अपने संसाधन पहचानकर्ता के रूप में सोचें, और मान लें कि यह भविष्य में बदल जाएगा।
- अपने प्रतिनिधित्व के लिंक के रूप में अपने आवेदन के माध्यम से जारी रखने के लिए सभी विकल्प प्रदान करें।
- अपने एप्लिकेशन को वेबसाइट के रूप में सोचें जो ग्राहकों द्वारा 'क्रॉल' या 'ब्राउज' किया जाएगा।
- अपने एपीआई के लिए क्लाइंट लिखने का प्रयास करें और युग्मन कहां होता है इसकी तलाश करें।
मत करो:
- API दस्तावेज़ों में यूआरआई टेम्पलेट्स प्रकाशित करें। यदि आपके पास क्वेरी पैरामीटर के लिए टेम्पलेट्स होना चाहिए उदाहरण के लिए, सुनिश्चित करें कि वे आपकी मीडिया प्रकार परिभाषा का हिस्सा हैं।
- यूआरआई के संग्रह के रूप में आपके क्रिया के बारे में सोचें चार क्रियाओं पर कार्य किया जा रहा है।
- ग्राहकों के लिए "एप्लिकेशन/एक्सएमएल" या "एप्लिकेशन/जेसन" जैसे माइम प्रकारों की सेवा करें।
एक समानता का उपयोग करने के लिए, आपके एपीआई को अपने ग्राहकों के लिए एक जीपीएस की तरह काम करना चाहिए और मानचित्र की तरह कम करना चाहिए। आप केवल ग्राहकों को पास की सड़क के नाम के साथ प्रदान करेंगे।लेकिन तब से, वे केवल वही कर सकते हैं जो आपका आवेदन कहता है कि वे किसी भी बिंदु पर कर सकते हैं।
इस शैली का उद्देश्य अपने आवेदन और उसके ग्राहकों के बीच युग्मन को कम करना है। सभी युग्मन आपके मीडिया प्रकार परिभाषा में होना चाहिए। यह एपीआई के विकास को सरल बनाता है, और संस्करण के लिए एक अच्छा तंत्र प्रदान करता है। यह अंकन जैसे मुद्दों के बारे में प्रश्न भी गायब हो जाता है।
अधिकांश "रीस्टफुल" एपीआई इस पैटर्न का पालन नहीं करते हैं। ऐसा करने के लिए, Sun Cloud API और इसके backstory देखें।
REST, सटीक और स्पष्ट रूप से शब्द को फैलाने में मदद के लिए धन्यवाद। – aehlke
एक व्यापक प्रश्न की तरह लेकिन मैं इसे आज़मा दूंगा। एक के लिए, केवल HTTP क्रियाओं का उपयोग करें कि कैसे इरादा किया गया था। एक यूआरएल तर्क के साथ एक यूआरएल पर पोस्ट न करें जो मूल रूप से POST को ओवरराइड करता है और उसे एक GET या DELETE में बदल देता है। इस प्रकार एसओएपी काम करता है (सबकुछ एक पोस्ट है)।
यह सही HTTP उपयोग है - करता है आरईएसटी के साथ बहुत कुछ नहीं है। – aehlke
जहां संभव हो अंतर्निहित प्रोटोकॉल का लाभ उठाएं। अपने पेलोड में क्रियाएं करने के बजाए (उदाहरण के लिए) HTTP प्राप्त करें, पोस्ट करें, पुट करें, विधियों को हटाएं। आपके यूआरआई को संसाधन का वर्णन करना चाहिए, लेकिन इसके साथ क्या नहीं करना चाहिए।
इसका आरईएसटी के साथ कुछ भी नहीं है! यह बस HTTP है। – aehlke
मैंने यूआरआई को क्रिया-मुक्त होना चाहिए ताकि यह सुनिश्चित किया जा सके कि मैंने HTTP को एक उदाहरण के रूप में प्रदान किया है (क्योंकि यह शायद इस स्थिति में सबसे आम प्रोटोकॉल है)। –
बातें आप से बचना चाहते हैं से कुछ हैं:
- की उपेक्षा कर कैशिंग
- टनेलिंग सब कुछ प्राप्त के माध्यम से (या वैकल्पिक रूप पोस्ट)
- MIME प्रकार की उपेक्षा कर
एक अच्छा लेख है यहां कुछ आरईएसटी विरोधी पैटर्न के बारे में बात करते हैं:
इस लेख में वर्णन कुछ डिजाइन फैसले कि बाकी हिस्सों से आरपीसी अंतर:
http://www.pluralsight.com/community/blogs/tewald/archive/2007/04/28/47067.aspx
@ S.Lott: धन्यवाद, मैं ईमानदारी से सोचा था कि मैं तैनात था कि जवाब के रूप में नहीं एक टिप्पणी। मैं अपने पत्थर खो रहा हूँ।
- 1. आराम से बनाम अन्य वेब सेवाएं
- 2. वेब क्लाइंट आराम से हटाएं
- 3. वेब सेवाएं, वेब अनुप्रयोग
- 4. जावा में वेब सेवाएं
- 5. दस्तावेज सेवास्टैक वेब सेवाएं
- 6. सार्वजनिक एसओएपी वेब सेवाएं
- 7. अनुबंध-आखिरी वेब सेवाएं?
- 8. अमेज़ॅन वेब सेवाएं:
- 9. कोडनिर्देशक वेब सेवाएं
- 10. रीस्टफुल वेब सेवाएं
- 11. इकाई निष्कर्षण वेब सेवाएं
- 12. स्वतंत्र रूप से उपलब्ध वेब सेवाएं/एपीआई
- 13. सी # .NET वेब सेवाएं - एक वेब सेवा
- 14. सत्र चर और वेब सेवाएं
- 15. पिछड़ा संगतता और वेब सेवाएं
- 16. हास्केल में एसओएपी वेब सेवाएं?
- 17. सेवा ब्रोकर और वेब सेवाएं
- 18. Asp.Net एमवीसी और वेब सेवाएं
- 19. रीस्टफुल वेब सेवाएं: कस्टम एक्सएमएल
- 20. एएसपी.नेट एमवीसी और वेब सेवाएं
- 21. वेब सेवाएं स्टब पीढ़ी + एंड्रॉइड
- 22. यूनिट परीक्षण वेब सेवाएं - HttpContext
- 23. डिफ़ॉल्ट रूप से डब्ल्यूसीएफ सेवाएं आराम से या साबुन आधारित हैं?
- 24. फ़ाइल को आराम से वेब सेवाओं में डाउनलोड करना
- 25. आराम से आदेश
- 26. आराम से प्रमाणीकरण से लेकर
- 27. जावा से आराम से सेवा कॉल करना
- 28. अमेज़ॅन वेब सेवाएं: अजगर या रूबी?
- 29. जावा वेब सेवाएं - एक्सिस आवश्यक है?
- 30. रीस्टफुल वेब सेवाएं और HTTP क्रियाएं
जेफ, अपनी सजा को चार रिक्त स्थान से शुरू न करें - जो इसे "मार्कडाउन" को कोड ब्लॉक (बिना शब्द रैप के) के रूप में पेश करने के लिए बताएगा और इसे पढ़ने में वाकई मुश्किल हो जाएगा - वास्तविक कोड ब्लॉक को छोड़कर, बेशक! :-) –
http://www.pluralsight.com/community/blogs/tewald/archive/2007/04/28/47067.aspx – skaffman
@SLott ... oops .. किया – skaffman