कल्पना कीजिए कि किसी उपयोगकर्ता ने अभी आपके वेब एप्लिकेशन पर डेटा पोस्ट किया है और आप वर्तमान पृष्ठ को अपनी सफलता या विफलता के संदेश के साथ दोबारा प्रदर्शित करना चाहते हैं। यह जटिल हो जाता है।आप HTTP पोस्ट से प्रेषित सभी तरीकों को कैसे संभालेंगे?
यदि डेटा मान्य है और उपयोगकर्ता एचटीएमएल की उम्मीद कर रहा है, तो आप एक रीडायरेक्ट जारी करना चाहते हैं ताकि ताज़ा करने से उन्हें फिर से पोस्ट नहीं किया जा सके। यदि आप मौजूद हैं, तो आप रेफरर पर रीडायरेक्ट करना चाहते हैं, और एक संदेश प्रदर्शित करना चाहते हैं। अगर वे एचटीएमएल की उम्मीद नहीं कर रहे हैं, तो आप बस 200 ओके वापस कर सकते हैं।
यदि डेटा अमान्य है और उपयोगकर्ता एचटीएमएल की उम्मीद कर रहा है, तो आप उस पृष्ठ को फिर से प्रस्तुत करना चाहते हैं, जो वे दिखाई दे रहे हैं, एक दृश्य त्रुटि के साथ, ताकि वे फिर से पोस्ट कर सकें। ऐसा करने के लिए, आपको पिछली कार्रवाई को चलाने की आवश्यकता होगी, और इसे त्रुटि संदेश के बारे में जानकारी होगी। यह तय करने के लिए कि पिछली कार्रवाई कौन सा थी, शायद आपने इसे फॉर्म में एक छिपे पैरामीटर के रूप में शामिल किया था। अगर वे एचटीएमएल की उम्मीद नहीं कर रहे हैं, तो आप एक लागू 4xx क्लाइंट त्रुटि वापस कर सकते हैं।
मुझे लगता है कि मैं खुद को इस मूर्ख नृत्य को कई बार कर रहा हूं। तो सवाल हैं:
1) आप इस पूरी प्रक्रिया को कैसे सार करेंगे ताकि कोई भी फॉर्म पोस्ट इसका लाभ उठा सके?
2) अपने पसंदीदा वेब ढांचे में इसे प्राप्त करने के लिए सबसे अधिक बनाए रखने योग्य या कम से कम दोहराव तरीका क्या है?
3) क्या आप इस पूरी प्रक्रिया में कुछ भी बदल देंगे जो इसे आसान बना देगा?
आइडिया 1: कभी भी पोस्ट पर प्रस्तुत न करें, हमेशा रीडायरेक्ट करें। अनुरोधों के बीच एक विभाजित दूसरे के लिए सत्र में त्रुटि डेटा भरें, और उसके बाद सफलता संदेश की तरह इसे साफ़ करें। इस तरह, मान्य और अमान्य पोस्ट को उसी तरह से संभाला जा सकता है।
आइडिया 2: कोई सामान्य HTTP पोस्ट न करें। केवल AJAX का उपयोग करें। अब आपको प्रतिपादन या पुनर्निर्देशन के बारे में चिंता करने की ज़रूरत नहीं है। यह केवल तभी उपयोगी होगा यदि आपके पास पहले से ही AJAX-भारी एप्लिकेशन है।
मुझे लगता है कि आप नहीं जानते कि आप कहां से आ रहे हैं। मैं अक्सर ऐसी परिस्थितियों में भाग लेता हूं जहां मैं एक क्रिया का पुन: उपयोग करने के लिए अलग-अलग पृष्ठों से उसी यूआरएल पर पोस्ट करना चाहता हूं। उस स्थिति में जहां डेटा अमान्य है और मैं रीडायरेक्ट करने के बजाय प्रतिपादन कर रहा हूं, मुझे पिछली कार्रवाई को समझने की आवश्यकता होगी। मुझे लगता है कि मैं अभी भी रेफरर से इसे खोज सकता हूं। –