2012-02-21 24 views
32

पर एकाधिक संसाधनों का अनुरोध करने के लिए मैं एक विश्वसनीय API तैयार करने की कोशिश कर रहा हूं जहां उपयोगकर्ता एक ही उत्पाद अनुरोध या एकल जीईटी अनुरोध में उत्पादों की सूची प्राप्त कर सकते हैं। प्रत्येक उत्पाद में एक अद्वितीय आईडी है।REST api:

एकल उत्पाद यूआरएल काफी सरल है:

http://mycompany.com/api/v1/product/id 

यह एक एकल उत्पाद के लिए जानकारी देता है। मैं उलझन में हूं कि एकाधिक उत्पाद जानकारी के लिए यूआरएल कैसा दिखना चाहिए।

कैसे

के बारे में
http://mycomapny.com/api/v1/product/ids 

जहां आईडी एक अल्पविराम से अलग है id की सूची?

+2

आईडी उपयोग कुछ http: //mycompany.com/api/v1/getproducts आईडी = [listofids] – Dampsquid

+1

कैसे एपीआई डिजाइन डुप्लिकेट के बारे में एक सवाल है रेल में कार्यान्वयन के विवरण के बारे में एक सवाल? – Tgr

उत्तर

28

आईडी का आपके सुझाव को कॉमा द्वारा अलग किए गए काफी अच्छा है।

यह कुछ सार्वजनिक आरईएसटी एपीआई जांचने के लिए निर्देशक होगा कि वे कैसे हैंडल करते हैं। पूर्व के लिए, StackExchange एपीआई एक सेमी-कोलन के साथ आईडी को अलग करती है - जैसे https://api.stackexchange.com/docs/answers-by-ids

+0

एपीआई उदाहरण के लिए धन्यवाद। – user824212

+1

मुझे आश्चर्य है कि लोग उत्पादों का उपयोग क्यों नहीं करते हैं? आईडी [] = 1 और आईडी [] = 2। यूआरएल पार्सर्स इसे ठीक से संभालते हैं। –

+5

@ जुलीओग्रेफ मुझे लगता है, ऐसा इसलिए है क्योंकि यह थोड़ा बदसूरत दिखता है। कोई अन्य विशेष कारण नहीं है। –

65

मैं इस बारे में सोचने की अनुशंसा करता हूं जैसे आप आईडी द्वारा फ़िल्टर किए गए संसाधन के कई प्रस्तुतिकरण सूचीबद्ध कर रहे हैं। इस तरह के रूप में आप आधार संसाधन के लिए एक GET अनुरोध करना:

https://example.com/api/v1/products

और id द्वारा प्रतिक्रिया सूची फ़िल्टर:

https://example.com/api/v1/products?id=1,2,3

+14

यह बेहतर उत्तर है, कारण: '/ products' और' products? Id = 1,2,3' __consistent__ प्रतिसाद (= संग्रह संसाधन) देगा। '/ Products/1' और'/products/1,2,3' की तुलना क्लाइंट सिरदर्द के लिए एक नुस्खा है - बेशक जब तक सभी नेस्टेड एंडपॉइंट डिफ़ॉल्ट रूप से संग्रह वापस नहीं करते हैं (जो एक दिलचस्प दृष्टिकोण भी है, उदाहरण के लिए [एपीआई + जेसन] (http://jsonapi.org/) प्रारूप) – Philzen

+1

मुझे यह दृष्टिकोण पसंद है, लेकिन यह https://example.com/api/v1/products?id=1&id=2&id=3 नहीं होना चाहिए? – Nitek

+2

@ नाइटक संख्या; [कोई गारंटी नहीं है] (http://stackoverflow.com/q/1746507/578288) कि डुप्लिकेट क्वेरी पैरामीटर को सरणी में जोड़ा जाएगा। आपके उदाहरण यूआरएल के लिए, PHP वास्तव में आपको बताएगा कि 'id'' 1, 2, 3] 'के बराबर है, लेकिन रेल पर रूबी आपको बताएगा कि यह' 3' के बराबर है, और अन्य ढांचे अलग-अलग कार्य भी कर सकते हैं, उदा। कह रहा है कि 'आईडी' बराबर '1' है। –

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