मैं एक 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
। हालाँकि, जैसा कि मैंने ऊपर लिखा है, यह संभव है कि एकाधिक Foo
s समान साझा करें Bar
। यह Foo
एक Bar
सम्बद्ध के बिना बनाना संभव होना चाहिए , इसलिए मुझे नहीं लगता कि Bar
माता-पिता के रूप में माना जाना चाहिए।