2012-05-29 12 views
9

आरईएसटी यूआरआई डिज़ाइन के बारे में बहुत सी चर्चाएं हैं, लेकिन किसी ने मेरे प्रश्न को ठीक से जवाब नहीं दिया।वृक्ष संरचनाओं के लिए आरईएसटी यूआरआई डिज़ाइन

मान लें कि मेरे पास कुछ सूचियां हैं जिनमें कार्य और/या अन्य सूचियां (सूची = नोड और कार्य = पत्ता) शामिल हैं। वास्तव में गहरी पेड़ों के बारे में

/lists/{id_list1}/{id_list2}/{id_list3}/{id_task1} 

लेकिन क्या:

हम जैसे

/lists/{id_list1}/lists/{id_list2}/lists/{id_list3}/tasks/{id_task1} 

या हो सकता है एक छोटा संस्करण कुछ हो सकता है?

मैं भी माता पिता/बच्चे का रिश्ता जो

/lists/{id_list_parent}/{id_list_or_task_child} 

तरह अनुवाद किया जा सकता के बारे में सोच रहा था, लेकिन मैं कुछ कमी है की तरह महसूस ...

क्या बाकी यूआरआई के पेड़ के लिए एक स्मार्ट डिजाइन हो सकता है?

EDIT

मेरे देर के उत्तर के लिए खेद है!

तो मुझे लगता है कि मैं 2 आवश्यकताओं को मिश्रित कर रहा था: एपीआई यूआरआई और ब्राउज़र यूआरआई।

यहां बताया गया है मैं चीजों को देखने के:

एपीआई पक्ष पर, मैं केवल दोनों लिखने के लिए उन यूआरआई है और तरीकों को पढ़ने के (अंत में '/ आईडी' की आवश्यकता नहीं है, के लिए उदाहरण के लिए बनाने) करेंगे :

/lists/id 
/tasks/id 

अपने ब्राउज़र पर हालांकि, मैं कुछ इस तरह होगा:

/lists/id/lists/id/tasks/ 

केवल पहला भाग (/ सूचियों/आईडी) सर्वर, दूसरे भाग (सूचियों द्वारा व्याख्या की जाएगी/आईडी/कार्य /) वाईआई सर्वर से प्राप्त सूची के sublist के कार्यों को खोजने के लिए मेरे क्लाइंट साइड जावास्क्रिप्ट द्वारा उपयोग किया जाएगा।

इस दृष्टिकोण के बारे में आप क्या सोचते हैं, इसमें कुछ गलत लगता है?

+0

गिट हब पर यूआरएल पर एक नज़र डालें https://github.com/twitter/bootstrap/tree/master/docs/templates फ़ोल्डर्स नोड्स हैं और फाइलें पत्तियां हैं। मुझे लगता है कि यह अच्छी तरह से काम करता है! –

+1

यूआरआई आरईएसटी एपीआई का हिस्सा नहीं है। आरईएसटी सामग्री के बारे में है, यूआरआई नहीं। यह आपको एक यूआरआई संगठन चुनने के लिए स्वतंत्र होना चाहिए, और इसे बाद में बदलना चाहिए। वैसे भी: आपको/सूचियों/{id_list1}/सूचियों/{id_list2}/सूचियों/{id_list3}/कार्यों/{id_task1} की आवश्यकता क्यों है? ऐसा लगता है कि आईडी 3 के साथ कार्य करने का कारण बनता है, इसलिए इसे सूची में कार्य के लिए कार्यों की सूची रखने के लिए/सूचियों/{id_list3}/कार्यों को कम नहीं किया जा सकता है, और/कार्यों/{id_task1}? – jmclem

+0

आपके उत्तर के लिए धन्यवाद लेकिन मेरा प्रश्न सटीक नहीं था, ऊपर मेरा संपादन देखें। – greg3z

उत्तर

0

इस बाधा को लागू करने के लिए यूआरआई का उपयोग करना सही नहीं लगता है। मैं एक पुट अनुरोध स्वीकार करता हूं जिसमें किसी प्रकार का पेलोड (JSON, XML, आदि) है।

PUT /tasklist

lists: [{ 
    id: 1234, 
    id: 12345, 
    tasks: [{ 
     id: foo, 
     id: bar, 
     id: baz 
    }] 
}] 

यूआरएल संकेत मिलता है कि आप बहुत ज्यादा यहाँ (IMHO) करने के लिए कोशिश कर रहे हैं लगता है। आम तौर पर, आप एक संसाधन के साथ बातचीत करेंगे, जबकि आपके उपयोग के मामले का तात्पर्य है कि आप एक समय में कई संदर्भित संसाधनों पर काम कर रहे हैं।

10

क्या यूआरआई के माध्यम से पेड़ का प्रतिनिधित्व करने की कोई आवश्यकता है? जब वे आसानी से नोड्स के संदर्भ हो सकते हैं और संबंधों को हाइपर्मियाडिया प्रकार में लिंक के माध्यम से मॉडलिंग किया जाता है।

उसके अलावा, मैं कुछ की तरह लगता है:

/lists/{nodeId}/children 

और यह माता पिता के लिए सीधी बच्चों की एक सूची लौट सकते हैं।

तुम भी कुछ ऐसा कर सकते हैं:

/lists/{nodeId}/children?depth=3 

और अपने परिणाम में पेड़ के अगले तीन स्तरों लौट आते हैं।

/lists/{nodeId}/children?depth=infinite 

पूरे नोड को उस नोड से वापस कर सकता है।

संबंधित मुद्दे