में बनाम बनाम लिंक शामिल करें तो एक विश्वसनीय एपीआई के लिए सामान्य पैटर्न एक ऑब्जेक्ट को एम्बेडेड लिंक के साथ वापस करना है जिसका उपयोग आप संबंधित ऑब्जेक्ट्स को पुनर्प्राप्त करने के लिए कर सकते हैं। लेकिन कभी-कभी सुविधा के लिए आप ऑब्जेक्ट ग्राफ़ के एक पूरे हिस्से को एक बार में खींचना चाहते हैं।रीस्टफुल एपीआई
उदाहरण के लिए, मान लीजिए कि आप ग्राहकों, आदेश, और रिटर्न के साथ एक दुकान आवेदन डालते हैं। तुम्हें पता है, एक साथ, ग्राहक आईडी 12345 (संभवतः वहाँ हमेशा नहीं लौटने के आदेश और ग्राहक व्यक्तिगत जानकारी के साथ रिटर्न के लिए अच्छे कारणों।)
विशुद्ध रूप से RESTful रास्ता के लिए व्यक्तिगत जानकारी, सभी आदेशों, और सभी रिटर्न प्रदर्शित करना चाहते हैं
GET /
- ग्राहकों
के लिए क्वेरी करने के लिए एक सहित लिंक टेम्पलेट की सूची देता है, ऐसा करने के लिए कुछ की तरह है 210
GET /customers/12345
- रिटर्न ग्राहक व्यक्तिगत जानकारी
- रिटर्न लिंक इस ग्राहक के आदेश प्राप्त करने के लिए (
/
से लिंक टेम्पलेट के आधार पर) और रिटर्न
GET /orders?customerId=12345
(/customers/12345
से प्रतिक्रिया)- आदेश हो जाता है ग्राहक 12345
GET /returns?customerId=12345
(/customers/12345
से प्रतिक्रिया)- ग्राहक 12345
के लिए रिटर्न हो जाता है लेकिन यह अच्छा है एक बार आप, customers
यूआरआई है एक क्वेरी में सभी वापस इस खींचने के लिए सक्षम होने के लिए होगा, । क्या इस तरह की सुविधा क्वेरी के लिए सबसे अच्छा अभ्यास है, जहां आप एकाधिक अनुरोध करने के बजाय कुछ या सभी लिंक को स्थानांतरित करना चाहते हैं? मैं कुछ ऐसा सोच रहा हूं:
GET /customers/12345?include=orders,returns
लेकिन अगर कोई तरीका है कि लोग इसे बाहर कर रहे हैं तो मैं बस कुछ नहीं करूँगा।
(Fwiw, मैं एक दुकान का निर्माण नहीं कर रहा हूँ, तो चलो के बारे में इन मॉडल, या कैसे आप वास्तविक उत्पादों, या जो कुछ भी करने के लिए नीचे ड्रिल करने जा रहे हैं के लिए सही वस्तुओं रहे हैं कि क्या वक्रोक्ति नहीं करते हैं।)
जोड़ने के लिए अपडेट किया गया: ऐसा लगता है कि HAL speak में इन 'एम्बेड किए गए संसाधन' कहा जाता है है, लेकिन पता चला उदाहरण में, वहाँ किसी भी तरह से जो संसाधनों एम्बेड करने के लिए चयन करने के लिए होने के लिए प्रतीत नहीं होता।मैं one blog post पाया कि मैं क्या ऊपर वर्णित की तरह कुछ सुझाव दे, क्वेरी पैरामीटर के रूप embed
का उपयोग कर:
GET /ticket/12?embed=customer.name,assigned_user
यह एक मानक या अर्द्ध मानक अभ्यास, या बस कुछ एक ब्लॉगर बना है?
आपके द्वारा प्रदान किया गया $ विस्तार पैरामीटर लिंक टूटा हुआ है। –
टूटा हुआ लिंक प्रतिस्थापित किया जाना चाहिए [इस पृष्ठ] के $ विस्तार अनुभाग (http://www.odata.org/blog/enhancing-odata-support-for-querying-derived-types-revisited/)। – Leith
धन्यवाद, लीथ! फिक्स्ड। –