2013-03-11 11 views
8

मुझे कोई समस्या है जहां मैं यह तय नहीं कर सकता कि इस मामले को कैसे प्राप्त किया जाए .. और मुझे यह जानने की जरूरत है कि इसे हल करने का कोई मानक तरीका है या यदि आपके पास इस मामले के लिए कोई महान इनपुट है।रीस्ट एपीआई, संबंधों के साथ पोस्ट इकाई?

बात यह है कि मैंने सीखने के उद्देश्य के लिए एक बहुत ही बुनियादी एपीआई बनाना शुरू कर दिया है एपीआई एक साधारण संगीत स्टोर है .. जहां स्टोर में कुछ एल्बम हैं जिनकी आवश्यकता है और कलाकार।

तो रिलेशनशिप कलाकार < --- 1 ----- * ---> एल्बम और एक एल्बम के अस्तित्व के लिए यह आवश्यक है कि एल्बम में एक कलाकार हो। लेकिन कलाकार की आवश्यकता नहीं है और एल्बम।

समस्या के लिए अब ...

इस संबंध के कारण यदि मैं एक नया एल्बम बनाने के लिए .. मैं एल्बम डेटा .. और पूरे Arist-data..not बस पोस्ट करने के लिए होता है चाहता हूँ वें कलाकार की आईडी .. लेकिन पूरे कलाकार .. यदि आप मुझसे पूछते हैं तो यह बहुत प्रभावी नहीं लगता .. क्योंकि यह पूरी तरह से अनावश्यक है।

तो जैसा कि मैंने इसे देखा है इसे हल करने के दो तरीके हैं ... या तो मैं सिर्फ संपूर्ण एल्बम-डेटा/ऑब्जेक्ट पोस्ट करता हूं और ऑब्जेक्ट के लिए कलाकार-डेटा को केवल एक आईडी रखने की अनुमति देता है जो उसके बाद संदर्भित करता है कलाकार।

बजाय की पोस्टिंग:

{ 
"Name":"AlbumName", 
"Description":"Some description for the album", 
"ReleaseYear": "1992", 
"Artist" { 
    "Name":"Some artist", 
    "Id":"12345", 
    "Biography":"Lorem ipsum dolor sit amet" 
    } 
} 

मैं यह कर जाएगा:

{ 
    "Name":"AlbumName", 
    "Description":"Some description for the album", 
    "ReleaseYear": "1992", 
    "Artist" { 
     "Id":"12345" 
     } 
    } 

विकल्प नंबर दो वास्तव में एक मार्ग/यूआरएल thats इस के लिए विशिष्ट है ... उदाहरण के लिए : /एपीआई/कलाकार/{कलाकार /} और उसके बाद बस उस यूआरएल पर एक एल्बम-ऑब्जेक्ट पोस्ट करें ..

लेकिन जैसा कि मैंने कहा .. Im r ईली को यह सुनिश्चित नहीं है कि यहां क्या सही और गलत है .. या क्या इसे संभालने का कोई मानक तरीका है?

अग्रिम धन्यवाद!

उत्तर

6

मैं इस तरह कुछ सुझाव दूंगा।

POST /musicstore/artist/343/albums 

{ 
    "Name":"AlbumName", 
    "Description":"Some description for the album", 
    "ReleaseYear": "1992", 
} 

कलाकार 343 के लिए एल्बम के संग्रह की एक बच्चे के रूप में एक संसाधन बनाने का कार्य अप्रत्यक्ष रूप से कलाकार और एल्बम के बीच संबंधों को पैदा करता है। पेलोड में इसे निर्दिष्ट करने की कोई आवश्यकता नहीं है।

+0

यहां विषय-वस्तु हो सकती है .. लेकिन आप एएसपीनेट वेब-एपीआई में यह कैसे करेंगे? .. क्योंकि इस तरह के प्रत्येक रूट के लिए एक नया मार्ग परिभाषित करने से कोड-लाइनों की एक बड़ी राशि बन जाएगी .. – Inx

+0

क्या कई से अधिक संसाधनों के बारे में? क्या पथ में दो अद्वितीय आईडी हैं या दोनों में से एक शरीर पेलोड में होना चाहिए? – Stephane

+0

@StephaneEybert या तो काम करेगा। मैं बाद वाले को पसंद करता हूँ। आपके पर्यावरण के आधार पर, यह http://tools.ietf.org/id/draft-snell-link-method-01.html भी दिलचस्प हो सकता है। –

0

मुझे लगता है कि दोनों विकल्प सही हैं और यह आपके लिए उपयोग करने के लिए है। दूसरा एक HATEOAS जैसा है।

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