एपीआई प्रतिक्रियाओं को पेजिनेट करना बड़े डेटासेट को कुशलतापूर्वक संभालने के लिए महत्वपूर्ण है। यहां सबसे आम रणनीतियाँ दी गई हैं:
1. ऑफसेट-आधारित पेजिनेशन (SKIP/LIMIT)
- यह कैसे काम करता है: क्लाइंट
offset(स्किप करने के लिए रिकॉर्ड की संख्या) औरlimit(वापस करने के लिए रिकॉर्ड की अधिकतम संख्या) पैरामीटर भेजता है। - फायदे: लागू करने और समझने में सरल।
- नुकसान: बहुत बड़े ऑफसेट के लिए अक्षम हो सकता है क्योंकि डेटाबेस को अभी भी छोड़े गए रिकॉर्ड को संसाधित करना और फिर त्यागना पड़ता है। यदि डेटा अनुरोधों के बीच जोड़ा या हटाया जाता है तो असंगत परिणाम हो सकते हैं (उदाहरण के लिए, एक आइटम कई पृष्ठों पर दिखाई दे सकता है या पूरी तरह से छोड़ दिया जा सकता है)।
- उदाहरण:
/api/items?offset=10&limit=10(आइटम 11-20 प्राप्त करता है)
2. कर्सर-आधारित पेजिनेशन (Keyset Pagination)
- यह कैसे काम करता है: ऑफसेट के बजाय, क्लाइंट एक "कर्सर" भेजता है (आमतौर पर पिछले पृष्ठ से अंतिम आइटम का आईडी या टाइमस्टैम्प)। फिर सर्वर इस कर्सर के बाद के आइटम लौटाता है।
- फायदे: बड़े डेटासेट के लिए अधिक कुशल क्योंकि यह पिछले रिकॉर्ड को फिर से स्कैन नहीं करता है। अनुरोधों के बीच डेटा परिवर्तनों (जोड़/हटाने) के प्रति अधिक मजबूत, डेटा का अधिक स्थिर "स्नैपशॉट" प्रदान करता है।
- नुकसान: लागू करने में अधिक जटिल हो सकता है। कर्सर के रूप में कार्य करने के लिए एक सुसंगत सॉर्ट ऑर्डर और एक अद्वितीय, अनुक्रमिक पहचानकर्ता (या फ़ील्ड का संयोजन) की आवश्यकता होती है। मनमाने ढंग से पृष्ठ संख्या पर कूदना आसान नहीं है।
- उदाहरण:
/api/items?after_id=12345&limit=10(आईडी 12345 वाले आइटम के बाद 10 आइटम प्राप्त करता है)
3. पृष्ठ-आधारित पेजिनेशन (Page Number/Page Size)
- यह कैसे काम करता है: क्लाइंट
page_numberऔरpage_sizeपैरामीटर भेजता है। यह अनिवार्य रूप से ऑफसेट-आधारित पेजिनेशन का एक उपयोगकर्ता-अनुकूल रैपर है (offset = (page_number - 1) * page_size)। - फायदे: उपयोगकर्ताओं के लिए सहज, विशिष्ट पृष्ठ संख्याओं पर प्रत्यक्ष नेविगेशन की अनुमति देता है।
- नुकसान: ऑफसेट-आधारित पेजिनेशन की अक्षमताओं और असंगतियों को विरासत में मिला है।
- उदाहरण:
/api/items?page=2&page_size=10(10 आइटम का दूसरा पृष्ठ प्राप्त करता है)
कार्यान्वयन के लिए मुख्य विचार:
- कुल गणना: प्रतिक्रिया में
total_count(आइटमों की कुल संख्या) शामिल करना है या नहीं, यह तय करें। यह यूआई तत्वों जैसे "पृष्ठ 1 में से 10" के लिए उपयोगी है, लेकिन बहुत बड़े डेटासेट के लिए इसकी गणना करना महंगा हो सकता है। कर्सर-आधारित पेजिनेशन अक्सर इसे छोड़ देता है। - सॉर्टिंग: पेजिनेशन को समझ में आने के लिए लगभग हमेशा एक सुसंगत सॉर्ट ऑर्डर की आवश्यकता होती है।
- त्रुटि प्रबंधन: यदि
offsetयाpage_numberसीमा से बाहर है तो क्या होता है? - सुरक्षा: दुरुपयोग (जैसे, अत्यधिक बड़े
limitमान) को रोकने के लिए पेजिनेशन पैरामीटर मान्य हैं यह सुनिश्चित करें। - HATEOAS (Hypermedia as the Engine of Application State): RESTful API के लिए, ग्राहकों का मार्गदर्शन करने के लिए प्रतिक्रिया में
next,prev,first, औरlastपृष्ठों के लिंक शामिल करने पर विचार करें।