मैं एक REST API बनाने की प्रगति में हूँ और वर्तमान में, मैं निम्नलिखित समस्या का सामना कर रहा हूँ:
Fooपहला संसाधन है।/foo/यूआरआई के माध्यम से सीआरयूडी संचालन लागू किया जा सकता है ।Barदूसरा संसाधन है।/bar/यूआरआई के माध्यम से सीआरयूडी संचालन लागू किया जा सकता है ।- प्रत्येक
Fooशून्य या एक के साथ जुड़ा हुआ हैBar। इस कारण से कि मैंBarएक सब-सोर्स के रूप में व्यवहार नहीं करता हूं,Fooक्योंकि एक हीBarउदाहरण म्यूटेंटFooएस के बीच साझा किया जा सकता है । इसलिए मुझे लगा कि इसके बजाय एक स्वतंत्र यूआरआई के माध्यम से इसे एक्सेस करना बेहतर है/foo/[id]/bar।
मेरी समस्या यह है कि मामलों की एक महत्वपूर्ण मात्रा में, ग्राहक जो एक Fooउदाहरण के लिए पूछते हैं वे भी संबंधित Barउदाहरण में रुचि रखते हैं । वर्तमान में, इसका मतलब है कि उन्हें एक के बजाय दो प्रश्न करने होंगे। मैं एक ऐसा तरीका पेश करना चाहता हूं जिससे दोनों वस्तुओं को एक ही क्वेरी के साथ प्राप्त किया जा सके, लेकिन मुझे नहीं पता कि ऐसा करने के लिए एपीआई को कैसे मॉडल करना है। अब तक मैं क्या लेकर आया:
- मैं इसके समान एक क्वेरी पैरामीटर पेश कर सकता हूं
/foo/[id]?include_bar=true:। इस दृष्टिकोण के साथ समस्या यह है कि प्रतिक्रिया के संसाधन प्रतिनिधित्व (उदाहरण के लिए JSON संरचना) को अलग दिखने की आवश्यकता होगी (उदाहरण के लिए एक कंटेनर जैसे कि{ foo: ..., bar: ... }बस क्रमबद्धFoo), जोFooसंसाधन को "विषम" बनाता है । मुझे नहीं लगता कि यह अच्छी बात है। क्वेरी करते समय/foo, क्लाइंट को हमेशा क्वेरी पैरामीटर की परवाह किए बिना समान संसाधन प्रतिनिधित्व (संरचना) प्राप्त करना चाहिए। - एक अन्य विचार एक नया रीड-ओनली समापन बिंदु पेश करना है, जैसे
/fooandbar/[foo-id]। इस मामले में, यह प्रतिनिधित्व को वापस करने के लिए कोई समस्या नहीं है{ foo: ..., bar: ... }, क्योंकि तब यहfooandbarसंसाधन का सिर्फ "आधिकारिक" प्रतिनिधित्व है । हालांकि, मुझे नहीं पता कि ऐसा हेल्पर एंडपॉइंट वास्तव में रैस्टफुल है (यही कारण है कि मैंने प्रश्न के शीर्षक में "कैन" लिखा है। बेशक यह तकनीकी रूप से संभव है, लेकिन मुझे नहीं पता कि यह एक अच्छा विचार है)।
तुम क्या सोचते हो? क्या कोई अन्य संभावनाएं हैं?
Barबिना संबंधित नहीं हो सकता Foo। हालाँकि, जैसा कि मैंने ऊपर लिखा है, यह संभव है कि एकाधिक Foos समान साझा करें Bar। यह Fooएक Barसम्बद्ध के बिना बनाना संभव होना चाहिए , इसलिए मुझे नहीं लगता कि Barमाता-पिता के रूप में माना जाना चाहिए।