HTTP क्रियाएं संभवतः HTTP प्रोटोकॉल के बारे में सबसे अधिक गूढ़ बातों में से एक हैं। वे मौजूद हैं, और उनमें से कई हैं, लेकिन वे क्यों मौजूद हैं?
रेल कई क्रियाओं का समर्थन करना चाहते हैं और कुछ क्रियाओं को जोड़ना चाहते हैं जो मूल रूप से वेब ब्राउज़र द्वारा समर्थित नहीं हैं।
यहां http क्रियाओं की एक विस्तृत सूची दी गई है: http://annevankesteren.nl/2007/10/http-methods
आधिकारिक RFC से HTTP पैच: https://datatracker.ietf.org/doc/rfc5789/?include_text=1
PATCH विधि अनुरोध करता है कि अनुरोध इकाई में वर्णित परिवर्तन का एक सेट संसाधन अनुरोध यूआरआइ द्वारा की पहचान के लिए लागू किया। परिवर्तनों के सेट को एक मीडिया प्रकार द्वारा पहचाने जाने वाले "पैच दस्तावेज़" नामक प्रारूप में दर्शाया गया है। यदि अनुरोध-URI किसी मौजूदा संसाधन की ओर संकेत नहीं करता है, तो सर्वर MAY एक नया संसाधन बनाता है, जो पैच दस्तावेज़ प्रकार (चाहे वह तार्किक रूप से एक शून्य संसाधन को संशोधित कर सकता है) और अनुमतियाँ, आदि पर निर्भर करता है।
PUT और PATCH अनुरोधों के बीच का अंतर उस तरह से परिलक्षित होता है जिस तरह से सर्वर अनुरोधित URI द्वारा पहचाने गए संसाधन को संशोधित करने के लिए संलग्न इकाई को संसाधित करता है। एक में PUT अनुरोध, संलग्न इकाई संसाधन मूल सर्वर पर संग्रहीत का एक संशोधित संस्करण माना जाता है, और ग्राहक अनुरोध कर रहा है कि संग्रहीत संस्करण प्रतिस्थापित किया। PATCH के साथ , हालांकि, संलग्न इकाई में निर्देशों का एक सेट होता है जो बताता है कि वर्तमान में मूल सर्वर पर रहने वाले संसाधन को एक नया संस्करण बनाने के लिए कैसे संशोधित किया जाना चाहिए। PATCH
विधि संसाधन द्वारा की पहचान को प्रभावित करता है अनुरोध- URI , और यह भी
मईअन्य संसाधनों पर दुष्प्रभाव पड़ता है; यानी, PATCH के अनुप्रयोग द्वारा नए संसाधन बनाए जा सकते हैं, या मौजूदा संशोधित किए जा सकते हैं ।
जहाँ तक मुझे पता है, PATCH क्रिया का उपयोग नहीं किया जाता है क्योंकि यह रेल अनुप्रयोगों में है ... जैसा कि मैं यह समझता हूँ, RFC पैच क्रिया का उपयोग पैच निर्देश भेजने के लिए किया जाना चाहिए जैसे कि आप दो फ़ाइलों के बीच एक अंतर करते हैं। पूरी इकाई को फिर से भेजने के बजाय, आप एक पैच भेजते हैं जो पूरी इकाई के आकार से बहुत छोटा हो सकता है।
कल्पना कीजिए कि आप एक बड़ी फ़ाइल को संपादित करना चाहते हैं। आप 3 पंक्तियों को संपादित करते हैं। फ़ाइल को वापस भेजने के बजाय, आपको बस अंतर भेजना होगा। प्लस साइड पर, पैच अनुरोध भेजने का उपयोग फ़ाइलों को अतुल्यकालिक रूप से मर्ज करने के लिए किया जा सकता है। एक संस्करण नियंत्रण प्रणाली कोड को अपडेट करने के लिए संभावित रूप से PATCH क्रिया का उपयोग कर सकती है ।
एक अन्य संभावित उपयोग मामला कुछ हद तक NoSQL डेटाबेस से संबंधित है, दस्तावेजों को संग्रहीत करना संभव है। मान लें कि हम सर्वर से क्लाइंट को आगे और पीछे डेटा भेजने के लिए JSON संरचना का उपयोग करते हैं। यदि हम किसी क्षेत्र को हटाना चाहते हैं, तो हम $ unset के लिए मोंगोडब में एक समान सिंटैक्स का उपयोग कर सकते हैं । दरअसल, दस्तावेजों को अपडेट करने के लिए मोंगॉडब में इस्तेमाल की जाने वाली विधि का उपयोग संभवतः जेंस पैच को संभालने के लिए किया जा सकता है।
इस उदाहरण को लेते हुए:
db.products.update(
{ sku: "unknown" },
{ $unset: { quantity: "", instock: "" } }
)
हम इस तरह से कुछ कर सकते हैं:
PATCH /products?sku=unknown
{ "$unset": { "quantity": "", "instock": "" } }
अंतिम, लेकिन कम से कम, लोग नहीं कह सकते कि वे HTTP क्रियाओं के बारे में क्या चाहते हैं। केवल एक सत्य है, और सत्य RFC में है।