REST डालने के लिए उचित प्रतिक्रिया - पूर्ण नया रिकॉर्ड, या केवल रिकॉर्ड आईडी मान?


15

मैं एक REST API का निर्माण कर रहा हूं, जो हमारे एप्लिकेशन में डेटाबेस को जोड़ने / अपडेट करने के लिए आवेषण (POST, idempotent) और अपडेट (PUT, idempotent) अनुरोधों की अनुमति देता है।

मैं सोच रहा हूं कि POST (इंसर्ट) ऑपरेशन के जवाब में क्लाइंट के पास कौन सा डेटा वापस भेजा जाए, इसके बारे में कोई मानक या सर्वोत्तम प्रथाएं हैं। हमें कम से कम एक रिकॉर्ड आईडी मान भेजने की आवश्यकता है (जैसे आपका नया रिकॉर्ड # 1234 रिकॉर्ड है)।

क्या हमें पूरी वस्तु के साथ प्रतिक्रिया देनी चाहिए? (उदाहरण के लिए अनिवार्य रूप से वही प्रतिक्रिया जो उन्हें "GET / object_type / 1234" अनुरोध से वापस मिल जाएगी)

क्या हमें केवल नए आईडी मान के साथ जवाब देना चाहिए? (उदाहरण के लिए "{आईडी: 1234}", जिसका अर्थ है कि यदि वे पूरे रिकॉर्ड को प्राप्त करना चाहते हैं तो उन्हें पूरा रिकॉर्ड हथियाने के लिए एक अतिरिक्त HTTP GET अनुरोध करने की आवश्यकता है)

एक रीडायरेक्ट हेडर उन्हें पूर्ण ऑब्जेक्ट के लिए URL पर इंगित करता है?

पूरी तरह से कुछ और?


मुझे सबसे अच्छा अभ्यास के बारे में यकीन है, लेकिन मेरे लिए व्यक्तिगत रूप से मैं शायद सिर्फ नई बनाई गई आईडी को वापस करने पर विचार करूंगा यदि सफल अन्यथा अन्यथा -1 को देखने के लिए इच्छुक रहें, हालांकि अन्य क्या कहते हैं
dreza

जवाबों:


13

खैर, REST इंटरफ़ेस में, HTTP के बाद जहाँ कभी भी संभव होता है, मैं एक 201 और URI को लोकेशन हेडर फ़ील्ड में नए बनाए गए संसाधन में वापस कर दूँगा। यहाँ स्थिति कोड परिभाषाएँ क्या कहती हैं:

10.2.2 201 को बनाया गया

अनुरोध पूरा हो गया है और परिणामस्वरूप एक नया संसाधन बनाया जा रहा है। नए बनाए गए संसाधन को यूआरआई (एस) द्वारा संदर्भित किया जा सकता है, जो प्रतिक्रिया की इकाई में लौटा है, एक स्थान हेडर फ़ील्ड द्वारा दिए गए संसाधन के लिए सबसे विशिष्ट यूआरआई है। प्रतिक्रिया SHOULD में संसाधन विशेषताओं और स्थान (नों) की सूची वाली एक इकाई शामिल होती है जिसमें से उपयोगकर्ता या उपयोगकर्ता एजेंट किसी एक को उपयुक्त चुन सकते हैं। इकाई प्रारूप सामग्री-प्रकार के हेडर फ़ील्ड में दिए गए मीडिया प्रकार द्वारा निर्दिष्ट किया गया है। मूल सर्वर 201 स्थिति कोड को वापस करने से पहले संसाधन बनाना होगा। यदि कार्रवाई तुरंत नहीं की जा सकती है, तो सर्वर SHOULD के बजाय 202 (स्वीकृत) प्रतिक्रिया के साथ प्रतिक्रिया करता है।

अगर कुछ गलत हुआ है, तो मैं तर्क दूंगा कि आपको -1दूसरों के कहे अनुसार नहीं लौटना चाहिए , लेकिन बस क्लाइंट या सर्वर एरर कोड (4xx या 5xx)। उदाहरण के लिए, यदि किसी उपयोगकर्ता को कुछ नए संसाधन बनाने की अनुमति नहीं है, तो आप बस "401 अनधिकृत" लौटा देंगे, इससे अधिक और कुछ भी कम नहीं।


शरीर के बारे में क्या? प्रतिक्रिया में खाली या पूरी नव निर्मित वस्तु?
डेवलपर

दो सामान्य विकल्प मुझे पता हैं 1) स्थान शीर्षलेख को उस स्थान पर सेट करना जहां नई इकाई को पाया जा सकता है, या, 2) शरीर में नई इकाई सहित। मैं व्यक्तिगत रूप से व्यावहारिक कारणों से उत्तरार्द्ध के साथ जाता हूं। सोमटाइम्स एक और अधिक आराम की भावना के लिए संयुक्त;)
ब्रूनो शेपर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.