एक आदेशित सूची का प्रतिनिधित्व करना रिलेशनल डेटाबेस के साथ कठिन समस्याओं में से एक है। सूची-सदस्यता संबंध में एक स्थिति संपत्ति जोड़ना ऐसा करने का सबसे आम तरीका है, क्योंकि आप ORDER BY position
अपनी SQL क्वेरी में जोड़कर आदेशित सूची को आसानी से प्राप्त कर सकते हैं , और क्योंकि आप आसानी से सूची के बीच में आइटम औसत से सम्मिलित कर सकते हैं। पिछली और बाद की सूची के सदस्य के मान, स्थिति को पूर्णांक के बजाय एक तैरता है।
दोहरे लिंक वाली सूचियों का उपयोग करने से बचना चाहिए, क्योंकि गलती से लिंक को असंगत बनाना आसान होता है, और इसके बजाय एक चक्रीय ग्राफ या पेड़ के साथ समाप्त होता है।
हालांकि, रेस्टफुल एपीआई रिलेशनल डेटाबेस के प्रतिबंध से ग्रस्त नहीं हैं। आप बस कुछ ऐसा कर सकते हैं जो एक स्थिति संपत्ति की तरह एक हैक का उपयोग करने के बजाय प्राकृतिक महसूस करता है।
यदि आपके पास सूची में केवल कुछ सौ तत्व हैं, तो बस पूरी सूची को एक अनुरोध में स्थानांतरित करें। यह मानते हुए कि हम [1, 2, 3, 4]
सूची के सदस्यों को आईडी करना चाहते हैं, जहां हम पहचान कर सकते हैं
POST /url/of/the/list
Content-type: application/json
...
[1, 2, 4, 3]
बैकएंड तब इसका अनुवाद कर सकता है जो भी डेटाबेस तकनीक आप उपयोग कर रहे हैं, लेकिन एपीआई उपयोगकर्ता को इन विवरणों पर विचार करने की आवश्यकता नहीं है।
यदि सूची बड़ी है और आइटम आमतौर पर व्यक्तिगत रूप से अनुरोध किए जाएंगे, तो आप url में एक सूचकांक की अनुमति दे सकते हैं:
GET /page/7
यदि आप HATEOAS में हैं, तो प्रतिक्रिया में नेविगेशन को सरल बनाने के लिए प्रचलित / अगले लिंक शामिल हो सकते हैं, यदि संसाधन आमतौर पर इस तरह से उपभोग किया जाएगा। हालाँकि, इसका अर्थ यह नहीं है कि आपके डेटाबेस में यह दोगुनी-लिंक्ड सूची भी है।
यदि सूची बहुत बड़ी है, तो आप ArrayList
इस तरह के / insert
या के समान संचालन को उजागर करना चाह सकते हैं । मैं एक कॉल की कल्पना कर सकता था जैसेpush
append
POST /url/of/the/list?at=1357;mode=insert
...
description of the item to insert
यदि reordering एक सामान्य उपयोग का मामला है और reordering को तुरंत प्रतिबद्ध किया जाना चाहिए, तो आप अपने API में एक उपयुक्त समापन बिंदु प्रदान कर सकते हैं:
POST /url/of/the/list/reorder-item?from=783;to=1357
यदि पुन: सूचीबद्ध सूची स्पष्ट रूप से प्रतिबद्ध होनी चाहिए, तो नए आदेश को JSON दस्तावेज़ के रूप में स्थानांतरित करना आसान होगा, ऊपर देखें।
अब यह बिल्कुल सच नहीं है कि आप अपने एपीआई को उस डेटाबेस तकनीक से पूरी तरह से अलग देख सकते हैं जिसका आप उपयोग कर रहे हैं। हालांकि, बाहरी एपीआई को कार्यान्वयन विवरण से यथासंभव मुक्त रखना सबसे अच्छा है। यदि कोई पूर्णांक एक पूर्णांक क्रम कॉलम को अपडेट करने के लिए लगभग 30 पंक्तियों को स्पर्श करता है, तो यह कोई बड़ी बात नहीं है। बस सबसे सरल काम संभव है और हमेशा पूरी सूची को अपडेट करें। यदि आपके पैमाने को आपके डेटाबेस के उपयोग को और अधिक परिष्कृत करने की आवश्यकता है, तो बैकेंड में इस परिष्कार को कैप्चर करना पसंद करें, जहां स्थिरता बनाए रखना आसान है।