मेरे पास एक ऑब्जेक्ट पदानुक्रम है जिसे मुझे RESTful API के माध्यम से उजागर करना होगा और मुझे यकीन नहीं है कि मेरे URL को कैसे संरचित किया जाना चाहिए और उन्हें क्या लौटना चाहिए। मुझे कोई सर्वोत्तम अभ्यास नहीं मिला।
मान लीजिए कि मेरे पास डॉग्स और बिल्लियाँ हैं जो जानवरों से विरासत में मिली हैं। मुझे कुत्तों और बिल्लियों पर CRUD संचालन की आवश्यकता है; मैं सामान्य रूप से जानवरों पर ऑपरेशन करने में सक्षम होना चाहता हूं।
मेरा पहला विचार कुछ ऐसा करने का था:
GET /animals # get all animals
POST /animals # create a dog or cat
GET /animals/123 # get animal 123
बात यह है कि / जानवरों का संग्रह अब "असंगत" है, क्योंकि यह उन वस्तुओं को वापस ले सकता है और ले सकता है जिनके पास बिल्कुल समान संरचना (कुत्ते और बिल्लियाँ) नहीं हैं। क्या यह "रेस्टफुल" माना जाता है कि एक संग्रह वस्तुओं को अलग करने की विशेषता है?
एक अन्य समाधान प्रत्येक ठोस प्रकार के लिए एक URL बनाना होगा, जैसे:
GET /dogs # get all dogs
POST /dogs # create a dog
GET /dogs/123 # get dog 123
GET /cats # get all cats
POST /cats # create a cat
GET /cats/123 # get cat 123
लेकिन अब कुत्तों और बिल्लियों के बीच का रिश्ता खो गया है। यदि कोई सभी जानवरों को प्राप्त करना चाहता है, तो कुत्ते और बिल्ली दोनों को संसाधनों को छोड़ना होगा। प्रत्येक नए पशु उपप्रकार के साथ यूआरएल की संख्या भी बढ़ेगी।
एक अन्य सुझाव यह जोड़कर दूसरे समाधान को बढ़ाने के लिए था:
GET /animals # get common attributes of all animals
इस मामले में, लौटे जानवरों में केवल सभी जानवरों के लिए सामान्य विशेषताएं होंगी, कुत्ते-विशिष्ट और बिल्ली-विशिष्ट गुण छोड़ने होंगे। यह सभी जानवरों को पुनः प्राप्त करने की अनुमति देता है, हालांकि कम विवरण के साथ। प्रत्येक लौटी हुई वस्तु में विस्तृत, ठोस संस्करण का लिंक हो सकता है।
कोई टिप्पणी या सुझाव?