में समग्र इकाइयों को अद्यतन करना मेरे पास कई परियोजनाओं के साथ एक इकाई है, «प्रोजेक्ट» कहें। सरल विशेषताओं के अलावा, परियोजना में «स्थिति» की एक सूची हो सकती है जिसमें से अंतिम एक वर्तमान है। मेरे पास प्रोजेक्ट बनाने/संपादित करने के लिए एक वेब फ़ॉर्म है। इस प्रोजेक्ट के सभी गुण इस फ़ॉर्म में बदला जा सकता है, और उपयोगकर्ता भी परियोजना के लिए एक नई स्थिति जोड़ सकते हैं (लेकिन वे पुरानी स्थिति को बदल या हटा नहीं सकते हैं)।एक विश्वसनीय संसाधन
परियोजना की स्थिति पूरी तरह से समग्र संस्थाएं हैं, उनके पास परियोजना के दायरे से बाहर कोई विशिष्ट अर्थ या पहचान नहीं है, और उन्हें सीधे संबोधित नहीं किया जाना चाहिए, इसलिए वे स्पष्ट रूप से एक विशेष रूट आरईएसटी संसाधन के लायक नहीं हैं।
आरईएसटी वास्तुकला के अनुसार, मैंने एक संसाधन/परियोजनाओं का निर्माण किया। POST का उपयोग एक नई परियोजना बनाने के लिए किया जाता है, और PUT का उपयोग किसी मौजूदा प्रोजेक्ट को बदलने के लिए किया जाता है।
हालांकि, मैं नहीं चाहता कि क्लाइंट परियोजना को अपने सभी ऐतिहासिक स्थितियों के साथ एक साथ रखे, क्योंकि पहली बार यह संग्रह बहुत भारी है, और दूसरी बात यह है कि व्यवसाय तर्क केवल स्थिति जोड़ने, उन्हें बदलने या हटाने के लिए अनुमति देता है, इसलिए परियोजना को अपने सभी स्थितियों के साथ एक साथ जोड़ना किसी भी तरह से समझ में नहीं आता है।
एक नई स्थिति के साथ एक परियोजना को पॉट करना भी एक विकल्प नहीं है, क्योंकि यह PUT की idempotency का उल्लंघन करता है।
मुझे दूसरे HTTP अनुरोध में स्थिति पोस्ट करने का विचार पसंद नहीं है, कहें/परियोजना/{आईडी}/स्थिति, क्योंकि यह उपयोगकर्ता के दृष्टिकोण से अद्यतन ऑपरेशन की परमाणु को तोड़ देगा। यदि यह दूसरा अनुरोध तार पर खो जाता है, तो यह प्रोजेक्ट उस उपयोगकर्ता को असंगत दिखाई देगा जो इसे संपादित करता है (गुण बदल गए हैं, लेकिन स्थिति वही रही है)। एक वास्तविक मोनोलिथिक इकाई को अद्यतन करने के इस सरल कार्य के लिए रीस्टफुल "लेन-देन" बनाना ओवरकिल (और त्रुटि प्रवण) जैसा लगता है।
इस तरह की समस्या मेरे काम में काफी सर्वव्यापी है, और इसे सामान्यीकृत किया जा सकता है: एक जटिल समग्र इकाई को अद्यतन करने का सबसे सही और परमाणु तरीका क्या है जिसके लिए व्यावसायिक तर्क द्वारा केवल आंशिक अद्यतन की अनुमति है?
वाह। मुझे इस आरएफसी के बारे में पता नहीं था। धन्यवाद! –
आपका स्वागत है! यह सुनकर खुशी हुई कि यह आपकी मदद करता है! –