चूंकि पोस्ट/रीडायरेक्ट/जीईटी (पीआरजी) पैटर्न में POST अनुरोध सफलतापूर्वक एक रीडायरेक्ट (303 See Other
) स्थिति कोड देता है, तो यह सूचित करना संभव है सफलता के विशिष्ट स्वाद के ग्राहक का आनंद लेना है (उदाहरण के लिए, ठीक, बनाया गया, स्वीकार्य, आदि) साथ ही साथ कोई उपयुक्त शीर्षलेख (उदाहरण के लिए Location
201 Created
के लिए, जो रीडायरेक्ट के साथ संघर्ष कर सकता है)?पोस्ट/रीडायरेक्ट/जीईटी (पीआरजी) बनाम सार्थक 2xx प्रतिक्रिया कोड
क्या यह उचित हो सकता है, उदाहरण के लिए, रीडायरेक्ट किए गए जीईटी को उचित प्रतिक्रिया कोड & शीर्षकों के साथ प्रतिक्रिया दें जो पोस्ट प्रतिक्रिया से अपेक्षित होंगे?
HTTP 1.1 कल्पना का कहना है:
इस विधि [303] मुख्य रूप से मौजूद है एक चयनित संसाधन के लिए उपयोगकर्ता एजेंट रीडायरेक्ट करने के लिए किसी POST- सक्रिय स्क्रिप्ट का आउटपुट अनुमति देने के लिए।
लेकिन अधिक सामान्य स्थिति कोड और शीर्षलेखों के नुकसान में कोई अंतर्दृष्टि प्रदान नहीं करता है।
संपादित करें - एक उदाहरण:
एक ग्राहक जो /orders/1
पर एक नया संसाधन बनाता /orders
को पोस्ट अनुरोध भेजता है।
सर्वर location: /orders/1
के साथ एक 201 Created
स्थिति है, क्योंकि यह जानता संसाधन बनाया गया था एक स्वचालित ग्राहक खुश हो जाएगा, और यह पता है, जहां यह है, लेकिन एक मानव एक वेब ब्राउज़र का उपयोग दुखी हो जाएगा, क्योंकि वे मिल भेजता है पेज /orders
दोबारा, और यदि वे इसे रीफ्रेश करते हैं तो वे एक और ऑर्डर भेजने जा रहे हैं, जो कि वे चाहते हैं कि वे होने की संभावना नहीं है।
यदि सर्वरस्थिति location: /orders/1
के साथ भेजता है तो मनुष्यों को उनके अस्तित्व और राज्य के बारे में सूचित किया जाएगा, और दुर्घटना से इसे दोहराने का खतरा नहीं होगा। स्वचालित क्लाइंट, हालांकि, संसाधन के निर्माण के स्पष्ट रूप से नहीं बताया जाएगा, इसे location
शीर्षलेख के आधार पर निर्माण का अनुमान लगाना होगा। इसके अलावा, अगर 303
कहीं और रीडायरेक्ट करता है (उदाहरण के लिए /users/someusername/orders
) मानव अच्छी तरह से व्यवस्थित हो सकता है, लेकिन स्वचालित क्लाइंट को अत्यधिक अनौपचारिक छोड़ दिया गया है।
मेरे सुझाव 201 Created
नए संसाधन पर रीडायरेक्ट अनुरोध के जवाब के रूप में भेजने के लिए गया था, लेकिन अधिक मैं इसके बारे में सोचो, कम मुझे यह पसंद है (सुनिश्चित करने के लिए केवल निर्माता 201
प्राप्त करता है मुश्किल हो सकता है और यह यह नहीं दिखाना चाहिए कि GET
अनुरोध ने संसाधन बनाया)।
इस स्थिति में इष्टतम प्रतिक्रिया क्या है?
क्या आप इस बारे में सोचा है कि आपने क्या सोचा था? – Gumbo
मैंने एक उदाहरण प्रदान करने के लिए प्रश्न संपादित किया है। धन्यवाद। –
बस स्पष्ट होने के लिए: आप पहले से ही यह सुनिश्चित कर चुके हैं कि एक मानव उपयोगकर्ता को अभी क्या हुआ है, इस बारे में अच्छी तरह से सूचित किया जाएगा, और अब आप एक स्वचालित के लिए ऐसा करने की कोशिश कर रहे हैं? – sdleihssirhc