2013-03-21 8 views
14

मैं एक प्रोजेक्ट में एम्बर-डेटा का उपयोग करना चाहता हूं, लेकिन जिस एपीआई के साथ मैं काम कर रहा हूं वह आरईएसटी सम्मेलनों का पालन नहीं करता है।एक गैर-विश्वसनीय वातावरण में एम्बर-डेटा

उदाहरण के लिए, सभी HTTP अनुरोध पोस्ट हैं और एंडपॉइंट्स के नामकरण सम्मेलन उनके द्वारा किए गए कार्यों के लिए अद्वितीय हैं। जैसे /api/thing/retrieve मुझे कुछ पैरामीटर के साथ JSON ऑब्जेक्ट पोस्ट करने की आवश्यकता होगी, और मुझे 'चीज़' वापस कर देगा।

क्या मैं आराम एडाप्टर का उपयोग करता हूं और कक्षा को फिर से खोलता हूं और विभिन्न खोज कार्यों को फिर से परिभाषित करता हूं?

या

मैं एक नया एडाप्टर बनाने के लिए है?

या

मैं बस अपना मॉडल (या शायद नियंत्रकों) में एंबर-डेटा और और उपयोग ajax का परित्याग करना चाहिए?

मुझे यकीन नहीं है कि मैं इनमें से किसी भी विकल्प को कैसे संभालेगा। किसी भी मार्गदर्शन की सराहना की जाएगी।

+0

मैं गैर-रीस्टफुल क्रियाओं को संभालने का एक तरीका भी ढूंढ रहा हूं – tigrish

+0

कोई बेहतर तरीका? – woohoou

उत्तर

1

इस विषय पर मैंने जो एकमात्र जानकारी देखी है वह नीचे दिए गए व्याख्यान लोगों द्वारा एक लेख रहा है।

http://eviltrout.com/2013/03/23/ember-without-data.html

मैं व्यक्तिगत रूप से लेख में reopenClass विधि के साथ चारों ओर toyed है, और अगर मैं एक सुसंगत लेकिन गैर REST API जो मैं नियमित रूप से बुला रहा था शायद एक mixin या उस प्रभाव के लिए कुछ में छोड़ने होगा ।

+0

इसलिए यदि मैं इसे सही ढंग से समझता हूं, तो आप कहते हैं कि "ग्राहक एडाप्टर न बनाएं", बल्कि मॉडल के लिए अपनी खुद की AJAX विधियां जोड़ें। – tigrish

+0

उपर्युक्त उत्तर में विधि निश्चित रूप से अधिक मजबूत है और कुछ ऐसा है जो मैं किसी भी जटिल के लिए प्रयोग करता हूं। हालांकि, मैंने कस्टम एडाप्टर लिखने में क्या शामिल है यह देखने के लिए एम्बर-डेटा/एडेप्टर दस्तावेज़ों में खोला नहीं है। कुछ मॉडलों के लिए, मैं अभी भी केवल अजाक्स कॉल डाल दूंगा; उससे अधिक जटिल और अनुसंधान और लेखन समय लागत के लायक होगा। – nrion

0

मैं कहूंगा कि, यदि आपका एपीआई लगातार (विश्वसनीय) है तो आपको अपने विनिर्देश को लागू करने के लिए DS.Adapter (DS.RESTAdapter नहीं) बनाना/विस्तार करना चाहिए।

सभी हुक वहां हैं, आप बस इसे परिभाषित करना समाप्त कर देंगे जब सभी मॉडल उपयोग कर सकें।

मैं मूल एडाप्टर कोड के माध्यम से भी पढ़ूंगा - (https://github.com/emberjs/data/blob/master/packages/ember-data/lib/adapters/basic_adapter.js) यह आपके लिए बेहतर प्रदर्शन बिंदु हो सकता है तो DS.Adapter।

यदि आपका एपीआई विश्वसनीय नहीं है, तो आप शायद आवश्यकतानुसार $ .ajax() कॉल का उपयोग करके बेहतर हो सकते हैं। लेकिन, मेरी राय में, यह अच्छी तरह से पैमाने पर नहीं है।

एक लिंक लायक पढ़ने जब बेसिक एडाप्टर को देख: http://emberjs.com/blog/2013/03/22/stabilizing-ember-data.html

एक आखिरी टिप्पणी, एक ORM या यहां तक ​​कि एक अधिक सरल कुछ तो एक ORM एक छोटी सी कार्य, मेरे लिए नहीं है कि निर्माण, का उपयोग कर बनाता है एंबर-डेटा प्रयास के लायक है, और हां कभी कभी दर्द।

+0

क्या आपके पास एक कस्टम एडाप्टर में एक गैर-आरईएसटी कार्रवाई का कोई उदाहरण है (अधिमानतः एक मॉडल उदाहरण पर जिसे कहा जाता है)? बुनियादी एडाप्टर पर पढ़ना मूल रूप से केवल मौजूदा आरईएसटी कार्यों के लिए कार्यान्वयन दिखाता है। – tigrish

+0

@ मेरे पास एकमात्र चीज है जो http://emberjs.com/blog/2013/03/22/stabilizing-ember-data.html है जो मूल एडाप्टर के बारे में बात करती है और कार्यान्वयन का एक उदाहरण देती है। – mspisars

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