RESTful API कितना असतत होना चाहिए?


12

मैंने पहले कभी RESTful API नहीं बनाया है और मैं सोच रहा हूं कि यह कैसे असतत होना चाहिए?

उदाहरण के लिए, मान लें कि मेरे पास एक ग्राहक है जिसका नाम, पता, फ़ोन नंबर, ईमेल पता, भाषा आदि है।

क्या यह समझ में आता है कि प्रत्येक व्यक्ति के क्षेत्र को अपडेट करने का एक तरीका है (अद्यतन पता, अपडेट ईमेल पता, आदि), या पूरे ग्राहक के लिए बस एक अद्यतन होना चाहिए और प्रत्येक क्षेत्र वैकल्पिक है?


3
आप क्या चाहते हैं? यदि आपको सिर्फ एक साधारण एपीआई की आवश्यकता है, तो मानकों के बारे में चिंता न करें जिसे आप इसे संभाल सकते हैं, जैसे कि थर्स्टन मुलर के स्वीकृत उत्तर। यदि आप एक वास्तविक REST चाहते हैं तो आपको रॉय फील्डिंग (उदाहरण के लिए निबंध) की खोज करने की आवश्यकता है। वह REST के आविष्कारक हैं। आप देखेंगे कि उदाहरण के लिए विचार है कि एक संसाधन == एक तालिका सच्चाई नहीं है। आप यह भी पाएंगे कि उदाहरण के लिए आपके प्रश्न के लिए एक या एक से अधिक फ़ील्ड को अपडेट करने के लिए PATCH HTTP विधि का उपयोग करना काफी सामान्य है। जहां एक संसाधन पर पूर्ण अपडेट के लिए POST या PUT (यहां बहुत सारी बहस) विधि का उपयोग किया जा सकता है।
ल्यूक फ्रेंकेन

जवाबों:


17

आपके पास संसाधन के लिए एक अद्यतन कार्रवाई है। अपने डेटाबेस में अंगूठे के एक मोटे नियम के रूप में एक संसाधन होगा। इसलिए आपके उदाहरण में ग्राहक के लिए एक अपडेट एक्शन के साथ एक कंट्रोलर है और जहाँ तक संभव हो फ़ील्ड्स वैकल्पिक हैं।

इसके अपवाद हो सकते हैं (उदाहरण के लिए यदि आप पासवर्ड को पासवर्ड और पासवर्ड से अपडेट करने की अपेक्षा करते हैं), लेकिन यह अधिकांश मामलों के लिए सही है।

यह अधिक संभावना है कि अपवाद नियंत्रक होते हैं जिनके पास कुछ संसाधनों के लिए सीमित क्रियाएं होती हैं, जैसे कि एक सत्रकंट्रोलर जिसे केवल बनाया और नष्ट किया जा सकता है। यह बहुत संभावना नहीं है कि आप एकल क्षेत्रों के लिए कार्य करना चाहेंगे।

आपके उदाहरण में एक चीज को स्वयं के संसाधन के रूप में संभाला जा सकता है और वह है पता। यदि आपके पास पतों के लिए एक तालिका होगी, खासकर यदि प्रति ग्राहक एक से अधिक पते होंगे (बिलिंग, वितरण ...) इसे एक नेस्टेड संसाधन के रूप में संभाला जा सकता है। लेकिन फिर से पूरे एड्रेस रिसोर्स के लिए एक अपडेट एक्शन।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.