मेरे दिमाग में क्या आता है: आप RESTful API को URL में पुनरावृत्ति को प्रतिबिंबित करने न दें। यह सोचने के लिए आओ, आपका संसाधन केवल दस्तावेज है।
यदि आपके पास अपने दस्तावेज़ों को पुनरावर्ती संरचना के अनुसार भौतिक रूप से संग्रहीत किया गया है, तो एक अद्वितीय आईडी के लिए एक मानचित्रण बनाएं, और URL में आईडी का उपयोग करें:
/rest/documents/{id}
अब, यदि आपके पास इस तरह से अपने दस्तावेज़ हैं:
| दस्तावेज़नाम | दस्तावेजपाठ | DocumentID |
--------------------------------------------
| एबीसी | / एबीसी | 1 |
| asd | / abc / asd | 2 |
| asd | / asd | 3 |
| बू | / abc / asd / boo | 4 |
| अरे | / abc / asd / हे | 5 |
अनुरोध इस /abc/asd
दस्तावेज़ के लिए यूआरएल से परामर्श करेगा
GET /rest/documents/2
तो, अब आपको अपने एपीआई के उपयोगकर्ताओं को थोड़े प्रयास के साथ अपनी संरचना को पार करने का साधन प्रदान करना होगा। आपके प्रतिक्रिया पेलोड (दस्तावेज़) को एक वस्तु में लपेटकर किया जा सकता है, इस तरह के अतिरिक्त त्रैमासिक जानकारी युक्त:
{
data: { /* your document goes here */ },
parent: {"abc": 1 },
children: [ { "boo": 4 }, { "hey": 5} ]
}
बशर्ते कि आप उपयोगकर्ताओं से एक ही स्तर में बहुत अधिक दस्तावेज़ नहीं बनाने की अपेक्षा करते हैं, आप प्रतिक्रिया में बच्चों की सूची शामिल कर सकते हैं। यदि ऐसा नहीं है तो आप उपयोगकर्ता को बाल दस्तावेज आईडी प्राप्त करने की पेशकश कर सकते हैं, उदाहरण के लिए, जैसे कि मानकों को पूरा करने के लिए अनुमति देना:
GET /rest/documents/2/children?page=2&size=50
अंत में, querystring मापदंडों की बात करते हुए, आप सीधे querystring पैरामीटर के माध्यम से पथ की जानकारी भी दे सकते हैं:
GET /rest/documents?path=somepath&page=1&size=42
उल्लिखित सभी दृष्टिकोणों से उम्मीद है कि सादे GET /rest/documents
केवल मूल दस्तावेज लौटाते हैं।