2012-04-24 10 views
6

मैं एक आरईएसटी एपीआई बना रहा हूं जहां मेरे पास "पुस्तकें" और "उपयोगकर्ता" हैं। वे केवल एक अद्वितीय पुस्तक मौजूद हो सकते हैं। हालांकि उपयोगकर्ता के पास कई पुस्तकें हो सकती हैं और अलग-अलग उपयोगकर्ताओं के पास एक ही पुस्तक हो सकती है (या इसके संदर्भ में)। उपयोगकर्ता किसी पुस्तक में अतिरिक्त जानकारी जोड़ सकता है (उदा। रेटिंग)।आरईएसटी संसाधनों से जुड़े हुए हैं और पहले से ही मौजूदा संसाधनों को विस्तारित करते समय कैसे संभालें?

मेरा प्रश्न है: संसाधनों को मैप करने का एक उचित तरीका क्या है जब उपयोगकर्ता पहले से मौजूद पुस्तक संसाधन को अपनी सेटिंग के साथ "विस्तारित" कर रहे हैं?

उदाहरण: पहली बार उपयोगकर्ता के पास कोई पुस्तक नहीं है लेकिन वे एक पुस्तक बना सकते हैं। यदि पुस्तक मौजूद नहीं है तो यह बनाया गया है, यदि यह मौजूद है तो उन्हें इसकी पहुंच मिल जाएगी। हालांकि वे अपनी निजी जानकारी को इसमें जोड़ सकते हैं।

क्या यह एक उचित तरीका है?

// बुनियादी आवश्यक जानकारी के साथ सभी पुस्तकें// पुस्तकों पर पहुंचा जा सकता है: आईडी उदाहरण:/पुस्तकों/1 {

"id":1, 
"title":"The Empire", 
"description":"Description about the book", 
"serial":1234 

}

// एक उपयोगकर्ता बनाता है पुस्तक "द एम्पायर" (सीरियल: 1234) वे पहले से ही मौजूदा पुस्तक का विस्तार कर रहे हैं लेकिन उन्होंने अतिरिक्त जानकारी जोड़ दी है, इसलिए यह वास्तव में एक नया यूआरएल है लेकिन बुक आईडी को संदर्भित करता है।

उदाहरण:/उपयोगकर्ताओं/421/पुस्तकों/1/

{ 
"id":1, 
"title":"The Empire", 
"description":"Description about the book", 
"serial":1234, 
"rating":5.5, 
    "note":"I liked the book but it was too long." 
} 

या भी:

{ 
"book":{ 
    id":1, 
    "title":"The Empire", 
    "description":"Description about the book", 
    "serial":1234, 
    } 
"rating":5.5, 
"note":"I liked the book but it was too long." 
} 

या की तरह/उपयोगकर्ताओं/421/पुस्तकों/1/सेटिंग्स भी एक यूआरएल ख़ाली/

{ 
"rating":5.5, 
"note":"I liked the book but it was too long." 
} 
+1

@jayraynet ने आपके प्रश्न का उत्तर दिया था? –

उत्तर

4

मैं कई समीक्षाओं (पुस्तक, उपयोगकर्ता) के साथ "समीक्षा" को जोड़ने की अनुमति देने और फिर पुनरीक्षण के लिए एक कैनोलिक संसाधन रखने की अनुशंसा करता हूं डब्ल्यू इस प्रकार है:

बुक /books/{book-id}

{ 
"id":1, 
"title":"The Empire", 
"description":"Description about the book", 
"serial":1234 
} 

एक पुस्तक समीक्षा /reviews/{review-id}

0 के लिए एक उपयोगकर्ता द्वारा /books/{book-id}/reviews

{[ 
{ 
"id":1, 
"userId":user1, 
"bookId":1, 
"rating":5.5, 
"note":"I liked the book but it was too long.", 
"url":http://server/reviews/1 
}, 
{ 
"id":2, 
"userId":user2, 
"bookId":1, 
"rating":1, 
"note":"boo, i didn't like it!", 
"url":http://server/reviews/2 
} 
]} 

समीक्षा /users/{user-id}/reviews

{[ 
{ 
"id":1, 
"userId":user1, 
"bookId":1, 
"rating":5.5, 
"note":"I liked the book but it was too long.", 
"url":http://server/reviews/1 
}, 
{ 
"id":2, 
"userId":user2, 
"bookId":1, 
"rating":1, 
"note":"boo, i didn't like it!", 
"url":http://server/reviews/2 
}, 
{ 
"id":5, 
"userId":user1, 
"bookId":3, 
"rating":2, 
"note":"I like to read", 
"url":http://server/reviews/5 
} 
]} 

विहित संसाधन की समीक्षा

{[ 
{ 
"id":1, 
"userId":user1, 
"bookId":1, 
"rating":5.5, 
"note":"I liked the book but it was too long.", 
"url":http://server/reviews/1 
}, 
{ 
"id":5, 
"userId":user1, 
"bookId":3, 
"rating":2, 
"note":"I like to read", 
"url":http://server/reviews/5 
} 
]} 

एक नई समीक्षा बनाना उपयोगकर्ता/समीक्षा, पुस्तक/समीक्षा, या उन POST सेवा के सर्वर कार्यान्वयन के साथ समीक्षा संसाधनों के लिए एक पोस्ट हो सकता है जो उपयोगकर्ता-आईडी या पुस्तक-आईडी को उचित रूप से डिफ़ॉल्ट करता है।

यूआरएल लिंक के कार्यान्वयन में कुछ विकल्प जैसे परमाणु: लिंक हैं।

साथ ही, इन सेवाओं के ग्राहक/उपभोक्ता को किताबों, उपयोगकर्ताओं और समीक्षाओं की कच्ची आईडी को उजागर करने और आईडी को एक यूआरआई के रूप में उजागर करने पर विचार न करें।

+0

जब प्रमाणीकरण की बात आती है तो क्या आप ** ** ** को इनमें से किसी भी को पोस्ट करने की अनुमति देंगे, लेकिन अनुमतियों को सीमित करें या बस/उपयोगकर्ता ...? (कुछ अन्य अधिकृत प्रकार जैसे लेखक, प्रकाशक, आदि जो मुख्य रूप से/किताबों के साथ संवाद कर सकते हैं ... –

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