रेस्टफुल एपीआई का मुख्य रूप से अन्य प्रणालियों द्वारा सेवन किया जाता है, यही वजह है कि मैंने रिस्पॉन्स हेडर में पेजिंग डेटा डाला। हालाँकि, कुछ API उपभोक्ताओं के पास प्रतिक्रिया शीर्षलेखों तक सीधी पहुँच नहीं हो सकती है, या आपके API पर UX का निर्माण हो सकता है, इसलिए JSON प्रतिक्रिया में मेटाडेटा को पुनः प्राप्त करने (मांगने) का एक तरीका प्रदान करना एक प्लस है।
मेरा मानना है कि आपके कार्यान्वयन में अनुरोध के अनुसार मशीन-पठनीय मेटाडेटा और डिफ़ॉल्ट रूप से मानव-पठनीय मेटाडेटा शामिल होना चाहिए। मानव-पठनीय मेटाडेटा को हर अनुरोध के साथ वापस किया जा सकता है यदि आप पसंद करते हैं या, अधिमानतः, ऑन-डिमांड एक क्वेरी पैरामीटर के माध्यम से, जैसे कि include=metadata
या include_metadata=true
।
आपके विशेष परिदृश्य में, मैं रिकॉर्ड के साथ प्रत्येक उत्पाद के लिए यूआरआई शामिल करूंगा। यह एपीआई उपभोक्ता के लिए व्यक्तिगत उत्पादों के लिंक बनाना आसान बनाता है। मैं अपने पेजिंग अनुरोधों की सीमाओं के अनुसार कुछ उचित अपेक्षाएं भी निर्धारित करूंगा। पृष्ठ आकार के लिए डिफ़ॉल्ट सेटिंग्स को लागू करना और प्रलेखित करना एक स्वीकार्य अभ्यास है। उदाहरण के लिए, GitHub की एपीआई अधिकतम 100 के साथ 30 पेज के लिए डिफ़ॉल्ट पृष्ठ आकार सेट करती है, साथ ही साथ आप एपीआई को क्वेरी कर सकते हैं की संख्या पर एक दर सीमा निर्धारित करता है। यदि आपके एपीआई में एक डिफ़ॉल्ट पृष्ठ आकार है, तो क्वेरी स्ट्रिंग केवल पृष्ठ सूचकांक को निर्दिष्ट कर सकती है।
मानव-पठनीय परिदृश्य में, जब नेविगेट करने के लिए /products?page=5&per_page=20&include=metadata
, प्रतिक्रिया हो सकती है:
{
"_metadata":
{
"page": 5,
"per_page": 20,
"page_count": 20,
"total_count": 521,
"Links": [
{"self": "/products?page=5&per_page=20"},
{"first": "/products?page=0&per_page=20"},
{"previous": "/products?page=4&per_page=20"},
{"next": "/products?page=6&per_page=20"},
{"last": "/products?page=26&per_page=20"},
]
},
"records": [
{
"id": 1,
"name": "Widget #1",
"uri": "/products/1"
},
{
"id": 2,
"name": "Widget #2",
"uri": "/products/2"
},
{
"id": 3,
"name": "Widget #3",
"uri": "/products/3"
}
]
}
मशीन-पठनीय मेटाडेटा के लिए, मैं प्रतिक्रिया के लिए लिंक हेडर जोड़ूंगा :
Link: </products?page=5&perPage=20>;rel=self,</products?page=0&perPage=20>;rel=first,</products?page=4&perPage=20>;rel=previous,</products?page=6&perPage=20>;rel=next,</products?page=26&perPage=20>;rel=last
(लिंक शीर्षक मान urlencoded होना चाहिए)
... और संभवतः एक कस्टम total-count
प्रतिक्रिया हेडर, यदि आप ऐसा चुनते हैं:
total-count: 521
मानव-केंद्रित मेटाडेटा में सामने आए अन्य पेजिंग डेटा मशीन-केंद्रित मेटाडेटा के लिए अति-उपयोगी हो सकते हैं, क्योंकि लिंक हेडर मुझे यह बताते हैं कि मैं किस पृष्ठ पर हूं और प्रति पृष्ठ संख्या, और मैं सरणी में रिकॉर्ड की संख्या को तुरंत प्राप्त कर सकता हूं। । इसलिए, मैं शायद कुल गिनती के लिए एक हेडर बनाऊंगा। आप हमेशा बाद में अपना विचार बदल सकते हैं और अधिक मेटाडेटा जोड़ सकते हैं।
एक तरफ के रूप में, आप नोटिस कर सकते हैं मैं /index
अपने यूआरआई से हटा दिया । एक आम तौर पर स्वीकार किए गए सम्मेलन में आपके ReST समापन बिंदु संग्रह को उजागर करना है। /index
अंत muddies कि थोड़ा ऊपर होने के बाद ।
API का उपभोग / निर्माण करते समय ये कुछ चीजें हैं जो मुझे पसंद हैं। उम्मीद है की वो मदद करदे!