मान लें कि मैं एक विश्वसनीय इंटरफ़ेस बनाना चाहता हूं, और मैं foo
एस के साथ अपनी आईडी के आधार पर काम करना चाहता हूं। यहां कोई नई बात नहीं:संसाधन के प्रतिनिधित्व को वापस करने के लिए सर्वोत्तम प्रथाएं जो संग्रह भी है
GET /api/foo1
प्रतिनिधित्वfoo1
की (जैसे JSON का उपयोग कर) देता है।DELETE /api/foo1
foo1
हटा देता है।
आदि
अब मैं आपको बता दूँ कि एक "foo" एक संग्रह प्रकार बात कर रही है। तो मैं एक "foo" करने के लिए एक "बार" जोड़ने के लिए सक्षम होना चाहते हैं:
PUT /api/foo1/bar3
foo1
कोbar3
कहते हैं।GET /api/foo1/bar3
foo1
का प्रतिनिधित्व देता है।DELETE /api/foo1/bar3
bar3
foo1
से हटा देता है।DELETE /api/foo1
foo1
पूरी तरह हटा देता है।
अब प्रश्न बना रहता है: GET /api/foo1
क्या करता है? क्या यह मूल रूप से इस प्रश्न में माना गया है कि यह foo1
का प्रतिनिधित्व देता है? या यह सलाखों की एक सूची वापस करता है? या क्या यह foo1
का प्रतिनिधित्व करता है जो foo1
के साथ-साथ दोनों में सभी निहित बारों की एक सूची शामिल है?
या GET /api/foo1
केवल foo1
का प्रतिनिधित्व लौटना चाहिए जैसा कि मैंने शुरू में ग्रहण किया, और foo1
(दृष्टिकोण WebDAV द्वारा लिया) के अंदर सलाखों सूची एक PROPFIND
अनुरोध की आवश्यकता होती है? लेकिन फिर सुसंगत होने के लिए, क्या मुझे अपनी सभी अन्य सूची-प्रकार की कार्यक्षमता को PROPFIND
में बदलना नहीं होगा, सामग्री की सूची के लिए GET /api/foo1
का उपयोग करने वाले सभी हजारों रीस्टफुल ट्यूटोरियल का सीधे विरोध करना होगा?
मुझे आपका दृष्टिकोण पसंद है। रिटर्न एक आइटम सूची वस्तु गुण - लंबाई, आयाम, ReadOnly सरणी विधि getValue:: सिर, वर्तमान सरणी वस्तु गुण: वास्तव में, यह एक ही व्यवहार है कि वास्तव में वस्तु उन्मुख भाषाओं सरणी या सूची वस्तुओं के लिए लागू है सूची विधि GetEnumerator - एक ऑब्जेक्ट देता है जो बदले में आइटम वापस कर देगा –