2013-08-14 9 views
19

में संसाधन की फ़ील्ड सूची निर्दिष्ट करने का तरीका मेरे पास एक वेब-सेवा के भीतर रीस्टफुल एपीआई है जिसमें कुछ प्रकार के संसाधन जैसे उपयोगकर्ता, पोस्ट आदि शामिल हैं। जब मैं पदों की सूची (जीईटी/पोस्ट) के लिए अनुरोध करता हूं, तो मैं प्रत्येक पोस्ट (यानी विषय, लेखक नाम) के लिए डेटा के कम हिस्से के साथ केवल पदों की सरणी पुनर्प्राप्त करना चाहता हूं। जब मैं कंक्रीट पोस्ट (जीईटी/पोस्ट/42) के लिए अनुरोध करता हूं, तो मैं पोस्ट ऑब्जेक्ट फ़ील्ड की पूरी सूची पुनर्प्राप्त करना चाहता हूं, जिसमें बड़े पोस्ट बॉडी, पसंद गिनती के बारे में अतिरिक्त जानकारी, टिप्पणियां गिनती शामिल हैं। मुझे लगता है कि यह इस समस्या को हल करने के कई तरीके मौजूद हैं। मेरे मन में, 3 सबसे स्पष्ट कर रहे हैं?रीस्टफुल एपीआई अनुरोध

  1. स्पष्ट रूप से हर अनुरोध पर खेतों lits निर्दिष्ट (/ पदों फ़ील्ड = विषय, AUTHOR_NAME और /पदों/42 के लिए खेतों = विषय, शरीर, createaAt, AUTHOR_NAME, comments_count, likes_count, आदि ...)।
  2. स्पष्ट रूप से फील्ड सूची निर्दिष्ट करें यदि यह डिफ़ॉल्ट फ़ील्ड सूची से अलग है।
  3. फ़ील्ड सूची निर्दिष्ट करें जिन्हें (या inlcuded) को डिफ़ॉल्ट फ़ील्ड सेट से बाहर रखा जाना चाहिए यदि इच्छित फ़ील्ड सेट डिफ़ॉल्ट से अलग हो।

मैं अपने ग्राहकों के लिए स्पष्ट और उपयोगी एपीआई बनाना चाहता हूं। मुझे किस तरह से चुनना चाहिए?

उत्तर

16

मैं विकल्प 2 आईएमएचओ के लिए जाऊंगा।

तो यदि उपभोक्ता संसाधन संसाधन यूआरएल (/ पद/42) का अनुरोध करता है तो उन्हें डिफ़ॉल्ट फ़ील्ड प्राप्त होते हैं। ,/पदों/42/क्षेत्रों विषय AUTHOR_NAME

यह अतीत में मेरे लिए अच्छी तरह से काम किया है और कुछ अन्य अच्छी तरह से जानते हैं कि कैसे एपीआई है:

फिर उपभोक्ताओं की तरह क्वेरी स्ट्रिंग में मूल्यों को परिभाषित करते हुए डिफ़ॉल्ट प्रतिक्रिया को बदल सकते हैं काम, उदाहरण के लिए Facebook

संपादित करें: इस पर वापस देखकर मैं अनुरोध को बदल दूंगा:/पद/42? फ़ील्ड = विषय, लेखक_नाम,/पोस्ट/42 संसाधन फ़ील्ड नहीं है।

+0

मैं सहमत हूं। यह प्रवेश के लिए एक कम बाधा प्रदान करता है, इसलिए डेवलपर्स डिफॉल्ट फ़ील्ड को आसानी से देख सकते हैं और आसानी से देख सकते हैं, लेकिन यदि आपको आवश्यकता हो तो बिल्कुल वही पूछने के लिए लचीलापन देता है। – theon

+0

मैं विकल्प (2) भी करता हूं, लेकिन मैं सभी फ़ील्ड्स प्राप्त करने के लिए 'फ़ील्ड = *' की अनुमति देता हूं ताकि पूर्ण सेट से पूछताछ करना आसान हो (एसएसपी। जो डेवलपर जानना चाहता है या उस सेट को दोबारा जांचना चाहते हैं)। –

5

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

https://facebook.github.io/react/blog/2015/05/01/graphql-introduction.html

संपादित करें: URL से पुन: निर्मित:

एक GraphQL क्वेरी एक स्ट्रिंग एक सर्वर है कि एक निर्धारित प्रारूप में डेटा रिटर्न से व्याख्या है।

{ 
    user(id: 3500401) { 
    id, 
    name, 
    isViewerFriend, 
    profilePicture(size: 50) { 
     uri, 
     width, 
     height 
    } 
    } 
} 

: यहाँ

और है: यहाँ एक उदाहरण क्वेरी है (ध्यान दें इस वाक्य पिछले GraphQL उदाहरणों से थोड़ी अलग है हमने हाल ही में भाषा में सुधार करने के लिए किया गया है।।) उस क्वेरी का जवाब।

{ 
    "user" : { 
    "id": 3500401, 
    "name": "Jing Chen", 
    "isViewerFriend": true, 
    "profilePicture": { 
     "uri": "http://someurl.cdn/pic.jpg", 
     "width": 50, 
     "height": 50 
    } 
    } 
} 
संबंधित मुद्दे