REST API सर्वश्रेष्ठ अभ्यास: इनपुट के रूप में पैरामीटर मानों की सूची को कैसे स्वीकार करें [बंद]


409

हम एक नया REST API लॉन्च कर रहे हैं और मैं चाहता था कि हम सर्वोत्तम प्रथाओं पर कुछ सामुदायिक इनपुट के बारे में बताएं कि हमारे पास इनपुट पैरामीटर कैसे होने चाहिए:

अभी, हमारा API बहुत JSON-केंद्रित है (केवल JSON देता है)। चाहे हम XML को वापस करना चाहते हैं की बहस एक अलग मुद्दा है।

जैसा कि हमारा एपीआई आउटपुट JSON केंद्रित है, हम एक ऐसे रास्ते पर जा रहे हैं जहां हमारे इनपुट थोड़ा JSON केंद्रित हैं और मैं सोच रहा हूं कि कुछ के लिए सुविधाजनक हो सकता है लेकिन सामान्य रूप से अजीब।

उदाहरण के लिए, कुछ उत्पाद विवरण प्राप्त करने के लिए जहां एक बार में हमारे पास कई उत्पाद खींचे जा सकते हैं:

http://our.api.com/Product?id=["101404","7267261"]

क्या हमें इसे सरल बनाना चाहिए:

http://our.api.com/Product?id=101404,7267261

या JSON इनपुट काम कर रहा है? एक दर्द के और?

हम दोनों शैलियों को स्वीकार करना चाहते हैं, लेकिन क्या यह लचीलापन वास्तव में अधिक भ्रम और सिर दर्द (स्थिरता, प्रलेखन, आदि) का कारण बनता है?

एक अधिक जटिल मामला तब है जब हम अधिक जटिल जानकारी देना चाहते हैं। उदाहरण के लिए, यदि हम खोज पर कई फ़िल्टर की अनुमति देना चाहते हैं:

http://our.api.com/Search?term=pumas&filters={"productType":["Clothing","Bags"],"color":["Black","Red"]}

हम जरूरी नहीं कि इस तरह के अनुरोध नामों के रूप में फ़िल्टर प्रकार (जैसे उत्पाद टाइप और रंग) डालना चाहते हैं:

http://our.api.com/Search?term=pumas&productType=["Clothing","Bags"]&color=["Black","Red"]

क्योंकि हम सभी फ़िल्टर इनपुट को एक साथ समूहीकृत करना चाहते थे।

अंत में, क्या यह वास्तव में मायने रखता है? यह संभावना हो सकती है कि वहाँ बहुत सारे JSON बर्तन हैं कि इनपुट प्रकार सिर्फ इतना ही मायने नहीं रखता है।

मुझे पता है कि एपीआई के लिए AJAX कॉल करने वाले हमारे जावास्क्रिप्ट क्लाइंट अपने जीवन को आसान बनाने के लिए JSON इनपुट की सराहना कर सकते हैं।

जवाबों:


341

एक कदम पीछे

सबसे पहले और सबसे महत्वपूर्ण, REST एक URI को एक सार्वभौमिक रूप से विशिष्ट आईडी के रूप में वर्णित करता है। बहुत से लोग URI की संरचना में फंस जाते हैं और जो URI दूसरों की तुलना में अधिक "आराम" करते हैं। यह तर्क उतना ही भद्दा है जितना किसी का नामकरण "बॉब" उसे नामकरण करने से बेहतर है "जो" - दोनों नामों को "एक व्यक्ति की पहचान" करने का काम मिलता है। एक यूआरआई एक सार्वभौमिक रूप से अद्वितीय नाम से अधिक कुछ नहीं है ।

तो REST की आँखों में इस बात ?id=["101404","7267261"]का तर्क है कि क्या इससे अधिक आराम है ?id=101404,7267261या \Product\101404,7267261कुछ हद तक व्यर्थ है।

अब, यह कहते हुए कि, कई बार यूआरआई का निर्माण कैसे किया जाता है, आमतौर पर एक अन्य सेवा के लिए एक अच्छे संकेतक के रूप में काम कर सकता है। आपके URI में कुछ लाल झंडे हैं और सामान्य रूप से प्रश्न हैं।

सुझाव

  1. एक ही संसाधन के लिए कई यूआरआई और Content-Location

    हम दोनों शैलियों को स्वीकार करना चाहते हैं, लेकिन क्या यह लचीलापन वास्तव में अधिक भ्रम और सिर दर्द (स्थिरता, प्रलेखन, आदि) का कारण बनता है?

    यूआरआई संसाधनों की पहचान करते हैं। प्रत्येक संसाधन में एक विहित यूआरआई होना चाहिए । इसका मतलब यह नहीं है कि आप एक ही संसाधन के लिए दो यूआरआई बिंदु नहीं रख सकते हैं, लेकिन इसे करने के बारे में जाने के लिए अच्छी तरह से परिभाषित तरीके हैं। यदि आप JSON और सूची आधारित स्वरूपों (या किसी अन्य प्रारूप) का उपयोग करने का निर्णय लेते हैं, तो आपको यह तय करने की आवश्यकता है कि इनमें से कौन सा प्रारूप मुख्य विहित URI है। अन्य URI के लिए सभी प्रतिक्रियाएं जो समान "संसाधन" की ओर इशारा करती हैं, उनमें शामिल होना चाहिएContent-Location हेडर

    सादृश्य नाम के साथ चिपकना, कई यूआरआई होना लोगों के लिए उपनाम रखने जैसा है। यह पूरी तरह से स्वीकार्य है और अक्सर कई बार बहुत उपयोगी होता है, हालांकि अगर मैं एक उपनाम का उपयोग कर रहा हूं, तो मैं शायद अभी भी उनका पूरा नाम जानना चाहता हूं - उस व्यक्ति को संदर्भित करने का "आधिकारिक" तरीका। इस तरह जब कोई अपने पूर्ण नाम, "निकलोस टेल्सा" से किसी का उल्लेख करता है, मुझे पता है कि वे उसी व्यक्ति के बारे में बात कर रहे हैं जिसे मैं "निक" के रूप में संदर्भित करता हूं।

  2. अपने URI में "खोजें"

    एक अधिक जटिल मामला तब है जब हम अधिक जटिल जानकारी देना चाहते हैं। उदाहरण के लिए, यदि हम खोज पर कई फ़िल्टर की अनुमति देना चाहते हैं ...

    मेरे अंगूठे का एक सामान्य नियम है, यदि आपके यूआरआई में एक क्रिया है, तो यह एक संकेत हो सकता है कि कुछ बंद है। यूआरआई एक संसाधन की पहचान करते हैं, हालांकि उन्हें संकेत नहीं देना चाहिए कि हम उस संसाधन के लिए क्या कर रहे हैं। यह HTTP का काम है या बाकी शब्दों में, हमारा "समान इंटरफ़ेस"।

    नाम सादृश्य मृत को हरा देने के लिए, एक URI में एक क्रिया का उपयोग करना किसी के नाम को बदलने के समान है जब आप उनके साथ बातचीत करना चाहते हैं। अगर मैं बॉब के साथ बातचीत कर रहा हूं, तो बॉब का नाम "बॉबहि" नहीं बन जाता है जब मैं उसे हाय कहना चाहता हूं। इसी प्रकार, जब हम "खोज" उत्पादों को चाहते हैं, तो हमारी यूआरआई संरचना को "/ उत्पाद / ..." से "/ खोज / ..." में नहीं बदलना चाहिए।

अपने प्रारंभिक प्रश्न का उत्तर देना

  1. ["101404","7267261"]बनाम के बारे में 101404,7267261: मेरा सुझाव यहां सादगी के लिए JSON सिंटैक्स से बचने के लिए है (जब आपके उपयोगकर्ताओं को URL एन्कोडिंग की आवश्यकता नहीं है, जब आपको वास्तव में नहीं करना है)। यह आपके एपीआई को और अधिक उपयोगी बना देगा। बेहतर है, जैसा कि दूसरों ने सिफारिश की है, मानक application/x-www-form-urlencodedप्रारूप के साथ जाएं क्योंकि यह संभवतः आपके अंतिम उपयोगकर्ताओं (जैसे) से परिचित होगा?id[]=101404&id[]=7267261 ) से । यह "सुंदर" नहीं हो सकता है, लेकिन सुंदर यूआरआई का उपयोग करने योग्य यूआरआई का मतलब नहीं है। हालाँकि, अपने प्रारंभिक बिंदु को दोहराने के लिए, अंततः जब REST के बारे में बोलते हैं, तो इससे कोई फर्क नहीं पड़ता। इस पर बहुत अधिक ध्यान न दें।

  2. आपका जटिल खोज यूआरआई उदाहरण आपके उत्पाद उदाहरण के रूप में उसी तरह से हल किया जा सकता है। मैं application/x-www-form-urlencodedप्रारूप को फिर से जाने की सलाह दूंगा क्योंकि यह पहले से ही एक मानक है जिससे कई परिचित हैं। इसके अलावा, मैं दोनों को मिलाने की सलाह दूंगा।

आपका URI ...

/Search?term=pumas&filters={"productType":["Clothing","Bags"],"color":["Black","Red"]}    

URI के एनकाउंटर होने के बाद आपका URI ...

/Search?term=pumas&filters=%7B%22productType%22%3A%5B%22Clothing%22%2C%22Bags%22%5D%2C%22color%22%3A%5B%22Black%22%2C%22Red%22%5D%7D

में तब्दील किया जा सकता है ...

/Product?term=pumas&productType[]=Clothing&productType[]=Bags&color[]=Black&color[]=Red

URL एन्कोडिंग की आवश्यकता से बचने और चीजों को थोड़ा अधिक मानक बनाने के अलावा, यह अब API को थोड़ा सा समरूप करता है। उपयोगकर्ता जानता है कि यदि वे किसी उत्पाद या उत्पादों की सूची प्राप्त करना चाहते हैं (दोनों को RESTful शब्दों में एक "संसाधन" माना जाता है), तो वे /Product/...यूआरआई में रुचि रखते हैं ।


67
का पालन करना चाहते हैं और ध्यान दें कि []वाक्यविन्यास हमेशा समर्थित नहीं है (और इसके सामान्य होने के बावजूद भी, यूआरआई युक्ति का उल्लंघन हो सकता है)। कुछ HTTP सर्वर और प्रोग्रामिंग भाषाएं केवल नाम को दोहराना पसंद करेंगी (जैसे productType=value1&productType=value2)।
nategood

1
इस प्रश्न के साथ प्रारंभिक प्रश्न .. "/ खोज? शब्द = प्यूमा और फ़िल्टर = {" productType ": [" वस्त्र "," बैग "]," रंग ": [" काला "," लाल "]}" का अनुवाद .. । (productType == कपड़े) productType == बैग) && (रंग == काला = रंग == लाल) आपका समाधान: / उत्पाद? शब्द = pumas और productType [] = वस्त्र और productType [] = बैग और रंग [] = काला और रंग [] = लाल अनुवाद करने के लिए लगता है ... या तो (productType == कपड़े) = productType == बैग || रंग == काला || रंग == लाल) या तो (productType == कपड़े && productType == बैग && color == || काला && रंग == लाल) जो मुझे थोड़ा अलग लगता है। या मैंने गलत समझा?
थॉमस चेंग

2
पोस्ट अनुरोध में इनपुट के बारे में क्या? मैं जानना चाहता था कि क्या हम किसी संसाधन को अपडेट कर रहे हैं, तो क्या यह मानक प्रारूप में शरीर में क्वेरी / फिल्टर और डेटा भेजने के लिए एक बुरा अभ्यास है। उदाहरण के लिए। अगर मैं एपीआई का उपयोग करके उपयोगकर्ता से संबंधित डेटा को बदलना चाहता हूं/user/ और शरीर में, मैं भेज देंगे { q:{}, d: {} }साथ qउपयोगकर्ता डीबी में पूछे हो जाएगा के साथ द्वारा और क्वेरी के रूप में dसंशोधित डेटा के रूप में।
अणु

1
जब सूची बहुत बड़ी हो सकती है तो आप क्या करते हैं? यूआरआई ब्राउज़र के आधार पर लंबाई में सीमित है। मैंने आमतौर पर पोस्ट अनुरोध पर स्विच किया है और सूची को शरीर में भेजा है। कोई सुझाव वहाँ?
ट्रॉय कोसेंटिनो

4
यह बहुत बड़ा होगा (देखें stackoverflow.com/questions/417142/… ), लेकिन हाँ, सबसे चरम मामलों में, आपको अनुरोध के शरीर का उपयोग करने की आवश्यकता हो सकती है। डेटा पुनर्प्राप्ति के लिए प्रश्नों को पोस्ट करना उन चीजों में से एक है, जो रेस्टाफैरियंस को बहस करना पसंद है।
nategood

233

मानों की सूची को URL पैरामीटर के रूप में पारित करने का मानक तरीका उन्हें दोहराना है:

http://our.api.com/Product?id=101404&id=7267261

अधिकांश सर्वर कोड इसे मूल्यों की एक सूची के रूप में व्याख्या करेंगे, हालांकि कई में एकल मूल्य सरलीकरण हैं, इसलिए आपको ढूंढना पड़ सकता है।

विलंबित मान भी ठीक हैं।

यदि आपको JSON को सर्वर पर भेजने की आवश्यकता है, तो मुझे इसे URL में देखना पसंद नहीं है (जो एक अलग प्रारूप है)। विशेष रूप से, URL में एक आकार सीमा होती है (यदि सिद्धांत में नहीं तो व्यवहार में)।

जिस तरह से मैंने देखा है कि एक जटिल प्रश्न को दो चरणों में किया जाता है:

  1. POST आपकी क्वेरी आवश्यकताएँ, एक आईडी प्राप्त करना (अनिवार्य रूप से एक खोज मापदंड संसाधन बनाना)
  2. GET खोज, उपरोक्त आईडी को संदर्भित करते हुए
  3. यदि आवश्यक हो तो वैकल्पिक रूप से क्वेरी आवश्यकताओं को हटाएं, लेकिन ध्यान दें कि वे आवश्यकताएं पुन: उपयोग के लिए उपलब्ध हैं।

8
धन्यवाद कैथी। मुझे लगता है कि मैं आपके साथ हूं और वास्तव में JSON को URL में देखना पसंद नहीं करता। हालांकि, मैं एक खोज के लिए एक पोस्ट करने का प्रशंसक नहीं हूं जो एक अंतर्निहित GET ऑपरेशन है। क्या आप इसका एक उदाहरण बता सकते हैं?
whatupwilly

1
यदि प्रश्न साधारण पैरामीटर के रूप में काम कर सकते हैं, तो ऐसा करें। स्रोत बाकी चर्चा मेलिंग सूची से था: tech.groups.yahoo.com/group/rest-discuss/message/11578
कैथी वान स्टोन

2
यदि आप सिर्फ दो संसाधनों को दिखाना चाहते हैं, तो जेम्स वेस्टगेट का उत्तर अधिक विशिष्ट है
कैथी वान स्टोन

यह सही जवाब है। निकट भविष्य में मुझे यकीन है कि हम कुछ फिल्टर = आईडी (ए, बी, सी, ...) को ओडटा द्वारा समर्थित या ऐसा कुछ देखेंगे।
बार्ट कैलिक्सो

इस तरह से अक्का HTTP काम करता है
जोन

20

प्रथम:

मुझे लगता है कि आप इसे 2 तरीके से कर सकते हैं

http://our.api.com/Product/<id> : अगर आप सिर्फ एक रिकॉर्ड चाहते हैं

http://our.api.com/Product : यदि आप सभी रिकॉर्ड चाहते हैं

http://our.api.com/Product/<id1>,<id2> : जैसा कि जेम्स ने सुझाव दिया है कि एक विकल्प हो सकता है क्योंकि उत्पाद टैग एक पैरामीटर के बाद आता है

या मुझे जो सबसे ज्यादा पसंद है वह है:

आप हाइपरमेडिया को रेस्टफुल डब्ल्यूएस की एप्लीकेशन स्टेट (HATEOAS) प्रॉपर्टी के इंजन के रूप में उपयोग कर सकते हैं और एक कॉल http://our.api.com/Productकरते हैं, जो इसके बराबर के यूआरएल को वापस करना चाहिए http://our.api.com/Product/<id>और इसके बाद उन्हें कॉल करना चाहिए ।

दूसरा

जब आपको url कॉल्स पर क्वेश्चन करना होता है। मैं फिर से HATEOAS का उपयोग करने का सुझाव दूंगा।

1) एक कॉल करने के लिए मिलता है http://our.api.com/term/pumas/productType/clothing/color/black

2) एक कॉल करने के लिए मिलता है http://our.api.com/term/pumas/productType/clothing,bags/color/black,red

3) (का उपयोग करते हुए HATEOAS) `करने के लिए एक बात कहते हैं http://our.api.com/term/pumas/productType/ -> यूआरएल सभी कपड़े संभव यूआरएल प्राप्त -> जिन्हें आप चाहते हैं (कपड़े और बैग) कहते हैं - > संभव रंग के यूआरएल प्राप्त करें -> जिन्हें आप चाहते हैं उन्हें कॉल करें


1
मुझे कुछ दिनों पहले इसी तरह की स्थिति में रखा गया था, एक (HATEOAS) बाकी एनी को फ़िल्टर करने के लिए (बड़ी) वस्तुओं की सूची प्राप्त करने के लिए और मैंने सिर्फ आपका दूसरा समाधान चुना। एक से अधिक ओवरकिल के लिए हर एक के लिए एपी को याद नहीं करना चाहिए?
सैमसन

यह वास्तव में आपके सिस्टम पर निर्भर करता है .... यदि यह कुछ "विकल्पों" के साथ एक सरल है तो इसे संभवतः ओवरकिल होना चाहिए। हालाँकि, यदि आपके पास कुछ बहुत बड़ी सूचियाँ हैं, तो यह एक बड़ी कॉल में यह सब करना वास्तव में तकलीफदेह हो सकता है, इसके अलावा अगर आपका एपीआई सार्वजनिक है तो यह उपयोगकर्ताओं के लिए जटिल हो सकता है (यदि यह एक निजी है तो यह आसान होना चाहिए ... केवल उन उपयोगकर्ताओं को सिखाएं जिन्हें आप जानते हैं)। एक विकल्प के रूप में, आप उन्नत उपयोगकर्ताओं के लिए हेटोएएस और "नॉन-रेस्टफुल एरे" कॉल दोनों शैली लागू कर सकते हैं
डिएगो डायस

मैं रेल में एक आराम से एप वेब सेवा का निर्माण कर रहा हूं और मुझे ऊपर के समान url संरचना ( our.api.com/term/pumas/productType/clothing/color/black ) का अनुसरण करने की आवश्यकता है । लेकिन मुझे यकीन नहीं है कि तदनुसार मार्गों को कैसे कॉन्फ़िगर किया जाए।
माणिक्य

शब्द, उत्पाद टाइप करें और अपने नियंत्रकों को रंग दें? यदि ऐसा है, तो आपको बस करने की आवश्यकता है: संसाधन: शब्द संसाधन करते हैं: उत्पाद टाइप संसाधन: रंग समाप्ति अंत
डिएगो डायस

productType और रंग परम हैं। तो उत्पाद
टाइप के पैरामेट्स

12

आप RFC 6570 की जांच कर सकते हैं । यह URI टेम्प्लेट कल्पना कई उदाहरण दिखाती है कि कैसे यूआरएल में पैरामीटर हो सकते हैं।


1
धारा 3.2.8 लगती है जो लागू है। हालांकि यह ध्यान देने योग्य है कि यह सिर्फ एक प्रस्तावित मानक है और लगता है कि उस बिंदु से आगे नहीं बढ़ा है।
माइक पोस्ट

3
@MikePost अब जब IETF "मानक ट्रैक" दस्तावेज़ों के लिए दो चरणों की परिपक्वता प्रक्रिया में स्थानांतरित हो गया है, तो मुझे उम्मीद है कि "इंटरनेट स्टैंडर्ड" पर जाने से पहले 6570 को कुछ और वर्षों तक ऐसे ही रहना होगा। tools.ietf.org/html/rfc6410 यह कल्पना बेहद स्थिर है, कई कार्यान्वयन हैं और व्यापक रूप से उपयोग किए जाते हैं।
डारेल मिलर

आह मुझे उस परिवर्तन की जानकारी नहीं थी। (या, TIL IETF अब और अधिक उचित है।) धन्यवाद!
माइक पोस्ट

8

पहला मामला:

एक सामान्य उत्पाद लुकअप इस तरह दिखेगा

http://our.api.com/product/1

तो मैं सोच रहा था कि सबसे अच्छा अभ्यास यह करने के लिए आपके लिए होगा

http://our.api.com/Product/101404,7267261

दूसरा मामला

क्वेरिस्ट्रिंग मापदंडों के साथ खोजें - इस तरह ठीक। मुझे AND और OR का उपयोग करने के बजाय शब्दों को संयोजित करने के लिए लुभाया जाएगा[]

पुनश्च यह व्यक्तिपरक हो सकता है, इसलिए ऐसा करें जो आपको सहज महसूस हो।

डेटा को url में डालने का कारण इतना है कि लिंक किसी साइट पर चिपकाया जा सकता है / उपयोगकर्ताओं के बीच साझा किया जा सकता है। यदि यह समस्या नहीं है, तो इसके बजाय JSON / POST का उपयोग करें।

संपादित करें: प्रतिबिंब पर मुझे लगता है कि यह दृष्टिकोण एक यौगिक कुंजी के साथ एक इकाई को सूट करता है, लेकिन कई संस्थाओं के लिए क्वेरी नहीं।


3
बेशक, दोनों उदाहरणों में, अनुगामी /वहाँ नहीं होना चाहिए क्योंकि यूआरआई एक संसाधन को संबोधित करता है, संग्रह नहीं।
लॉरेंस डोल

2
मैं हमेशा यद्यपि HTTP verbs, एक REST उपयोग में विशिष्ट कार्य करने के लिए था, और यह मार्गदर्शन रेखा थी: GET: ऑब्जेक्ट को पुनः प्राप्त / पढ़ना, POST ऑब्जेक्ट बनाना, PUT अपडेट मौजूदा ऑब्जेक्ट और DELETE किसी ऑब्जेक्ट को हटाना। इसलिए मैं कुछ प्राप्त करने के लिए POST का उपयोग नहीं करूंगा। अगर मुझे विशेष रूप से ऑब्जेक्ट की एक सूची चाहिए (फ़िल्टर), तो मैं यूआरएल मापदंडों में एक सूची के साथ एक GET करूँगा (अल्पविराम द्वारा अलग किया गया अच्छा लगता है)
एलेक्स

1

मैं nategood के जवाब के साथ पूरा करूँगा क्योंकि यह पूरा हो गया है और ऐसा लगता है कि कृपया आपकी ज़रूरतों को पूरा करेगा। हालाँकि, मैं इस तरह से एकाधिक (1 या अधिक) संसाधन की पहचान करने पर एक टिप्पणी जोड़ना चाहूंगा:

http://our.api.com/Product/101404,7267261

ऐसा करने में, आप:

अपनी प्रतिक्रिया को एक सरणी के रूप में व्याख्या करने के लिए मजबूर करके ग्राहकों को जटिल करें , जो मुझे निम्नलिखित अनुरोध करने पर सहज ज्ञान युक्त है।http://our.api.com/Product/101404

निरर्थक एपीआई बनाएं सभी उत्पादों को प्राप्त करने के लिए एक एपीआई और 1 या कई प्राप्त करने के लिए ऊपर के साथ । चूंकि आप UX के लिए किसी उपयोगकर्ता को विवरण का 1 से अधिक पृष्ठ नहीं दिखा सकते हैं, मेरा मानना ​​है कि 1 से अधिक ID होना बेकार है और विशुद्ध रूप से उत्पादों को फ़िल्टर करने के लिए उपयोग किया जाता है।

यह समस्याग्रस्त नहीं हो सकता है, लेकिन आपको या तो एकल इकाई को वापस करके (यदि आपकी प्रतिक्रिया में एक या अधिक है) सत्यापित करके या क्लाइंट को इसे प्रबंधित करने दें

उदाहरण

मैं अमेजिंग से किताब मंगवाना चाहता हूं । मुझे पता है कि यह कौन सी पुस्तक है और मैं इसे हॉरर पुस्तकों के लिए नेविगेट करते समय सूची में देखता हूं:

  1. 10 000 अद्भुत लाइनें, 0 अद्भुत परीक्षण
  2. अद्भुत राक्षस की वापसी
  3. अद्भुत कोड की नकल करते हैं
  4. अंत की अद्भुत शुरुआत

दूसरी पुस्तक का चयन करने के बाद, मैं एक सूची के पुस्तक भाग का विवरण देने वाले पृष्ठ पर पहुंच गया हूं:

--------------------------------------------
Book #1
--------------------------------------------
    Title: The return of the amazing monster
    Summary:
    Pages:
    Publisher:
--------------------------------------------

या किसी पृष्ठ में मुझे केवल उस पुस्तक का पूरा विवरण देना?

---------------------------------
The return of the amazing monster
---------------------------------
Summary:
Pages:
Publisher:
---------------------------------

मेरी राय

मैं पथ चर में आईडी का उपयोग करने का सुझाव दूंगा जब इस संसाधन का विवरण प्राप्त करते समय एकता की गारंटी दी जाती है। उदाहरण के लिए, नीचे दिए गए एपीआई एक विशिष्ट संसाधन के लिए विवरण प्राप्त करने के लिए कई तरीके सुझाते हैं (यह मानते हुए कि एक उत्पाद की एक विशिष्ट आईडी है और उस उत्पाद का एक विशिष्ट नाम है और आप ऊपर नीचे नेविगेट कर सकते हैं):

/products/{id}
/products/{id}/specs/{name}

जिस क्षण आपको 1 से अधिक संसाधन की आवश्यकता होगी, मैं एक बड़े संग्रह से फ़िल्टरिंग का सुझाव दूंगा। एक ही उदाहरण के लिए:

/products?ids=

बेशक, यह मेरी राय है क्योंकि इसे लागू नहीं किया गया है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.