इसे एक और तरीके से रखने के लिए, idempotency के पीछे मूल बातें यह है कि जीईटी ऑपरेशन ऑपरेशन के परिणामों को प्रभावित नहीं करता है। यही है, जीईटी सुरक्षित रूप से किसी भी दुष्प्रभाव के साथ दोहराया जा सकता है।
हालांकि, एक बेवकूफ अनुरोध के पास संसाधन के प्रतिनिधित्व से कोई लेना देना नहीं है।
दो काल्पनिक उदाहरण:
GET /current-time
GET /current-weather/90210
स्पष्ट होना चाहिए, इन संसाधनों समय के साथ बदल के रूप में, कुछ संसाधनों अधिक तेजी से दूसरों की तुलना में बदल जाते हैं। लेकिन वास्तविक संसाधन को प्रभावित करने में जीईटी ऑपरेशन खुद जर्मनी नहीं है।
कंट्रास्ट के लिए:
GET /next-counter
यह स्पष्ट रूप से मुझे आशा है कि है, न कि idempotent अनुरोध, है। अनुरोध स्वयं संसाधन बदल रहा है।
इसके अलावा, ऐसा कुछ भी नहीं है जो कहता है कि एक बेवकूफ ऑपरेशन का कोई दुष्प्रभाव नहीं है। जाहिर है, जीईटी समेत कई सिस्टम लॉग एक्सेस और अनुरोध करते हैं। इसलिए, जब आप जीईटी/संसाधन करते हैं, तो उस जीईटी के परिणामस्वरूप लॉग बदल जाएंगे। उस तरह की तरफ से प्रभावित होने से यह बेकार नहीं होता है। मौलिक आधार संसाधन पर ही प्रभाव पड़ता है।
लेकिन क्या बारे में, कहते हैं:
GET /logs
लॉग प्रत्येक अनुरोध पंजीकृत करते हैं, और प्राप्त अपनी वर्तमान स्थिति में लॉग लौटा रहा है, इसका मतलब यह है कि कि इस मामले में प्राप्त idempotent नहीं है? हाँ! क्या यह वास्तव में मायने रखता है? नहीं। इस एक किनारे के मामले के लिए नहीं। बस खेल की प्रकृति।
के बारे में क्या:
GET /random-number
आप एक छद्म यादृच्छिक संख्या जनरेटर का उपयोग कर रहे हैं, तो खुद पर उन फ़ीड के सबसे। अगली संख्या प्राप्त करने के लिए एक बीज से शुरू करना और अपने परिणामों को वापस अपने आप में खिलााना। तो, यहां एक जीईटी का उपयोग कर बेवकूफ नहीं हो सकता है। लेकिन क्या यह है? आप कैसे जानते हैं कि यादृच्छिक संख्या कैसे उत्पन्न होती है। यह एक सफेद शोर स्रोत हो सकता है। और आप परवाह क्यों करते हैं? यदि संसाधन बस एक यादृच्छिक संख्या है, तो आप वास्तव में नहीं जानते कि ऑपरेशन इसे बदल रहा है या नहीं।
लेकिन सिर्फ इसलिए कि दिशानिर्देशों में अपवाद हो सकते हैं, उन दिशानिर्देशों के पीछे अवधारणाओं को अमान्य रूप से अमान्य नहीं करता है।
संसाधन परिवर्तन, जीवन का एक साधारण तथ्य है। संसाधन का प्रतिनिधित्व सार्वभौमिक, या अनुरोधों में लगातार, या उपयोगकर्ताओं के अनुरूप नहीं होना चाहिए। सचमुच, संसाधन का प्रतिनिधित्व वह है जो प्राप्त करता है, और यह एप्लिकेशन पर निर्भर करता है, जो जानता है कि प्रत्येक अनुरोध के लिए प्रतिनिधित्व निर्धारित करने के लिए कौन से मानदंड निर्धारित करते हैं। बेवकूफ अनुरोध बहुत अच्छे हैं क्योंकि वे शेष आरईएसटी मॉडल के साथ अच्छी तरह से काम करते हैं - कैशिंग और सामग्री वार्ता जैसी चीजें।
अधिकांश संसाधन जल्दी से नहीं बदलते हैं, और गैर-idempotent क्रियाओं का उपयोग कर विशिष्ट लेनदेन पर भरोसा करते हैं, ग्राहकों के लिए एक और अनुमानित और लगातार इंटरफ़ेस प्रदान करता है। जब कोई विधि बेवकूफ माना जाता है, तो यह मामला नहीं होने पर ग्राहक आश्चर्यचकित होंगे। लेकिन अंत में, यह एप्लिकेशन और इसके दस्तावेज इंटरफेस तक है।
शीर्षक पर अच्छा संपादन! –