@ray, उत्कृष्ट चर्चा
@jgerman, मत भूलना सिर्फ इसलिए कि यह बाकी है, इसका मतलब यह नहीं है कि संसाधनों पोस्ट से पत्थर में सेट किया जाना है।
संसाधन के किसी दिए गए प्रतिनिधित्व में शामिल करने के लिए आप क्या चुनते हैं वह आपके ऊपर है।
अलग-अलग संदर्भों के कवर का आपका मामला केवल एक मूल संसाधन (कॉमिक बुक) का निर्माण है जिसका बाल संसाधन (कवर) पार-संदर्भित किया जा सकता है। उदाहरण के लिए, आप लेखकों, प्रकाशकों, पात्रों, या श्रेणियों को अलग से संदर्भ प्रदान करना भी चाह सकते हैं। आप इन संसाधनों को अलग-अलग या कॉमिक बुक से पहले बनाना चाहते हैं जो उन्हें बाल संसाधन के रूप में संदर्भित करता है। वैकल्पिक रूप से, आप मूल संसाधन के निर्माण पर नए बाल संसाधन बनाना चाहते हैं।
कवर का आपका विशिष्ट मामला थोड़ा अधिक जटिल है कि वास्तव में एक कवर को कॉमिक बुक और वीज़ा बनाम की आवश्यकता होती है।
हालांकि, यदि आप संसाधन के रूप में एक ईमेल संदेश मानते हैं, और पते से बच्चे संसाधन के रूप में, तो आप स्पष्ट रूप से अभी भी पते से अलग से संदर्भित कर सकते हैं। उदाहरण के लिए, सभी पते से प्राप्त करें। या, पते से पिछले के साथ एक नया संदेश बनाएँ। यदि ईमेल आरईएसटी था, तो आप आसानी से देख सकते थे कि कई क्रॉस-रेफरेंस किए गए संसाधन उपलब्ध हो सकते हैं:/प्राप्त-संदेश,/ड्राफ्ट-संदेश,/पते,/पते,/पते,/विषयों,/अनुलग्नक,/फ़ोल्डर ,/टैग,/श्रेणियां,/लेबल, आदि अल।
यह ट्यूटोरियल क्रॉस-रेफरेंस किए गए संसाधनों का एक बड़ा उदाहरण प्रदान करता है। http://www.peej.co.uk/articles/restfully-delicious.html
स्वचालित रूप से जेनरेट किए गए डेटा के लिए यह सबसे आम पैटर्न है। उदाहरण के लिए, आप नए संसाधन के लिए यूआरआई, आईडी, या निर्माण तिथि पोस्ट नहीं करते हैं, क्योंकि ये सर्वर द्वारा उत्पन्न होते हैं। और फिर भी, जब आप नया संसाधन वापस प्राप्त करते हैं तो आप यूआरआई, आईडी या निर्माण तिथि पुनर्प्राप्त कर सकते हैं।
बाइनरी डेटा के आपके मामले में एक उदाहरण। उदाहरण के लिए, आप बाइनरी डेटा को बाल संसाधन के रूप में पोस्ट करना चाहते हैं। जब आप मूल संसाधन प्राप्त करते हैं तो आप उन बाल संसाधनों का प्रतिनिधित्व उसी बाइनरी डेटा के रूप में कर सकते हैं, या यूआरआई जो द्विआधारी डेटा का प्रतिनिधित्व करते हैं।
फॉर्म & पैरामीटर संसाधनों के HTML प्रस्तुतियों से पहले से ही अलग हैं। एक बाइनरी/फ़ाइल पैरामीटर पोस्ट करना जिसके परिणामस्वरूप यूआरएल एक खिंचाव नहीं है।
जब आप किसी नए संसाधन (/ कॉमिक-बुक/न्यू) के लिए फॉर्म प्राप्त करते हैं, या संसाधन (/ कॉमिक-बुक/0/एडिट) संपादित करने के लिए फॉर्म प्राप्त करते हैं, तो आप फॉर्म-विशिष्ट प्रतिनिधित्व के लिए पूछ रहे हैं संसाधन का। यदि आप संसाधन-प्रकार "एप्लिकेशन/एक्स-www-form-urlencoded" या "मल्टीपार्ट/फॉर्म-डेटा" के साथ संसाधन संग्रह में पोस्ट करते हैं, तो आप सर्वर को उस प्रकार के प्रतिनिधित्व को सहेजने के लिए कह रहे हैं। सर्वर HTML प्रतिनिधित्व के साथ प्रतिक्रिया दे सकता है जो सहेजा गया था, या जो भी हो।
आप एक एपीआई या इसी तरह के प्रयोजनों के लिए संसाधन संग्रह में पोस्ट करने के लिए एचटीएमएल, एक्सएमएल, या जेएसओएन प्रस्तुति की अनुमति भी दे सकते हैं।
कॉमिक बुक के बाद पोस्ट किए गए खाता कवरों को ध्यान में रखते हुए, आपके संसाधनों और वर्कफ़्लो का प्रतिनिधित्व करना भी संभव है, लेकिन कॉमिक पुस्तकों को कवर करने की आवश्यकता है। निम्नानुसार उदाहरण।
- की अनुमति देता है देरी कवर निर्माण
- की अनुमति देता है के लिए आवश्यक कवर के साथ हास्य पुस्तक सृजन
- की अनुमति देता है कवर पार संदर्भित
- की अनुमति देता है कई कवर
- बनाएं मसौदा हास्य पुस्तक
- मसौदा हास्य पुस्तक बनाएं होने के लिए कवर
- ड्राफ्ट कॉमिक बुक
प्रकाशित करें
GET/comic-books
=> 200 ठीक है, सभी हास्य पुस्तकें प्राप्त करें।
प्राप्त करें/कॉमिक-बुक/0
=> 200 ठीक है, कवर के साथ कॉमिक बुक (आईडी: 0) प्राप्त करें (/ कवर/1,/कवर/2)।
प्राप्त करें/कॉमिक-बुक/0/कवर
=> 200 ठीक है, कॉमिक बुक (आईडी: 0) के लिए कवर प्राप्त करें।
प्राप्त/कवर
=> 200 ठीक है, सभी कवर प्राप्त करें।
प्राप्त/कवर/1
=> 200 ठीक है, कॉमिक बुक (/ कॉमिक-बुक/0) के साथ कवर (आईडी: 1) प्राप्त करें। (: पोस्ट/ड्राफ्ट-कॉमिक पुस्तकों फार्म)
प्राप्त/कॉमिक पुस्तकों/नई
=> 200 ठीक, प्रपत्र हास्य पुस्तक बनाने के लिए प्राप्त करें।
पोस्ट/ड्राफ्ट-कॉमिक पुस्तकों
title = foo
लेखक = बू
प्रकाशक = goo
प्रकाशित = 2011-01-01
=> 302 मिला, स्थान:/ड्राफ्ट-हास्य किताबें/3, ड्राफ्ट कॉमिक बुक (आईडी: 3) ड्राफ्ट (बाइनरी) के साथ रीडायरेक्ट करें।
प्राप्त करें/ड्राफ्ट-कॉमिक-किताबें/3
=> 200 ठीक है, ड्राफ्ट कॉमिक बुक (आईडी: 3) को कवर के साथ प्राप्त करें।
प्राप्त/ड्राफ्ट-कॉमिक पुस्तकों/3/
=> 200 ठीक शामिल किया गया है, जाओ मसौदा हास्य पुस्तक के लिए कवर (/ ड्राफ्ट-कॉमिक बुक/3)।
प्राप्त/ड्राफ्ट-कॉमिक पुस्तकों/3/शामिल किया गया/नई
=> 200 ठीक, मसौदा हास्य पुस्तक के लिए कवर बनाने के लिए प्रपत्र प्राप्त करें (/ ड्राफ्ट-कॉमिक बुक/3) (प्रपत्र: पोस्ट/draft- हास्य किताबें/3/कवर)।/ड्राफ्ट-कॉमिक पुस्तकों/3/कवर, नई यहां रीडायरेक्ट करें:
पोस्ट/ड्राफ्ट-कॉमिक पुस्तकों/3/
cover_type = सामने
cover_data = (बाइनरी)
=> 302 मिला, स्थान को शामिल किया गया ड्राफ्ट कॉमिक बुक (/ ड्राफ्ट-कॉमिक-बुक/3/कवर/1) के लिए कवर।
प्राप्त/ड्राफ्ट-कॉमिक पुस्तकों/3/प्रकाशित
=> 200 ठीक, मसौदा हास्य पुस्तक (आईडी: 3) प्रकाशित करने के लिए प्रपत्र जाओ (प्रपत्र: पोस्ट/प्रकाशित-हास्य किताबें)।
पोस्ट/प्रकाशित-कॉमिक पुस्तकों
title = foo
लेखक = बू
प्रकाशक = goo
प्रकाशित = 2011-01-01
cover_type = सामने
cover_data = (बाइनरी)
= > 302 मिला, स्थान:/कॉमिक-किताबें/3, कवर के साथ प्रकाशित कॉमिक बुक (आईडी: 3) पर रीडायरेक्ट करें।
[रीस्टफुल सेवा डिस्कवरी] का उपयोग कर रहा है (http://barelyenough.org/blog/2008/01/restful-service-discovery-and-description/) समझ में आता है? – treecoder
मैं हेटाओस का पालन करने की कोशिश कर रहा हूं, जो मेरे दिमाग में ऐसा कुछ उपयोग करने के लिए काउंटर चलाता है लेकिन मैं एक नज़र डालूंगा। – jgerman
एक ही भावना में अलग सवाल। हालांकि स्वामित्व आपके प्रस्तावित समाधान (प्रश्न में से एक) से अलग है। http://stackoverflow.com/questions/20951419/what-are-best-practices-for-rest-nested-resources – Wes