संक्षिप्त उत्तर: यह आपकी JSON सेवा पर निर्भर करता है।
सेवा शुरू करने वालों के लिए रीस्टफुल है? यदि हां, तो आप भाग्य में हैं। ActiveResource dead है, इसलिए मैं इसका उपयोग करने की सलाह नहीं दूंगा, लेकिन कोड स्वयं आपके एपीआई तक पहुंचने के लिए create
और find
जैसे रैपर विधियों का एक सेट बनाने के लिए एक अच्छा प्रारंभिक बिंदु प्रदान करेगा और रिकॉर्ड्स को रिकॉर्ड करेगा जिस तरह से ActiveRecord बनाता है और रिकॉर्ड रिकॉर्ड करता है डीबी। यह अपेक्षाकृत आसान है यदि आपका एपीआई रीस्टफुल है क्योंकि rails is built around RESTful-ness, इसलिए दोनों के बीच मैपिंग अधिक क्लीनर बन जाती है।
This article यह सार अच्छी तरह से:
रेल यह बहुत आसान वेब सेवाओं है कि बाकी सिद्धांतों का पालन करें और वेब ब्राउज़र और प्रोग्राम वेब के साथ समान रूप से अच्छी तरह से काम के निर्माण के लिए बनाता है। असल में, बहुत सी सादगी इन सिद्धांतों का पालन करने से सीधे आती है। हमें अपने क्लाइंट को संसाधन बनाने, पढ़ने, अपडेट करने या हटाने का तरीका नहीं बताया गया था, जो सभी उचित HTTP विधियों का उपयोग करने के बाद थे। हमें बस इतना करना था कि हमारे ग्राहक को सही जगह पर इंगित करें।
आपकी सेवा है यदि नहीं शोकहारा, जो अन्य प्रश्न पर टिप्पणी से मुझे लगता है कि पहचानने शायद मामला है, तो आप अपने काम आप के लिए बाहर काट होगा। ActiveModel आपके लिए यह काम नहीं करेगा: create
ActiveRecord::Persistence में परिभाषित किया गया है, और find
ActiveRecord::FinderMethods में परिभाषित किया गया है। वे ActiveModel में नहीं हैं।ActiveResource उन्हें काफी आसानी से पुन: उत्पन्न करने में सक्षम है क्योंकि यह उस प्रकार की सेवा के बारे में धारणा करता है जो यह इंटरफेसिंग कर रहा है (यानी कि यह रीस्टफुल है, साथ ही कुछ अन्य चीजें)। , इसके सत्यापन प्रणाली, क्रमबद्धता तरीकों, विशेषता परिवर्तन का गंदा ट्रैकिंग, कॉलबैक (before_save
, after_save
, आदि), अनुवाद/स्थानीयकरण:
क्या ActiveModel प्रदान करता है अन्य सभी सामान है कि रेल तो मॉडल से निपटने के लिए उपयोगी बनाता है और इसी तरह। ये सभी उपयोगी काम हैं, लेकिन वे अभी भी आपको अपनी एपीआई कॉल लपेटने की समस्या से छोड़ देते हैं।
- पहले, अपने एपीआई पर विशेष ध्यान दें और यह पता लगाने के कितने पास यह किया जा रहा है:
तो यहाँ मैं, क्या सिफारिश करेंगे पर अपने सीमित अनुभव यद्यपि (इस बारे में मेरी अंतिम टिप्पणी देखें) आधारित है RESTful। यदि यह रीस्टफुल है, तो आपको इसके बारे में सोचना होगा कि इसके आसपास कैसे काम करना है ताकि आप इसे एक विश्वसनीय सेवा की तरह व्यवहार कर सकें। ऐसा करने के तरीके के बारे में एक अच्छा संदर्भ ओ रेली RESTful Web Services (विशेष रूप से अध्याय 2, "लेखन वेब सेवा ग्राहक"।) है
- यह है कि लागू करता
create
, find
और जो कुछ अन्य ActiveRecord जैसी कार्यप्रणाली के चारों ओर एक एपीआई आवरण के लिए आप चाहते हैं बनाएं की है। आप वास्तव में नेट :: HTTP के साथ काम करने के बजाय एपीआई को अनुरोध करने के लिए Faraday या HTTParty जैसे मणि का उपयोग करना चाहेंगे। (मैंने कभी भी डेटामैपर का उपयोग नहीं किया है, इसलिए उस पर टिप्पणी नहीं कर सकते हैं।)
- एक्टिवमोडेल के जो भी तत्व आप अपने रैपर वर्ग को रेल मॉडल की तरह बनाने के लिए उपयोग करना चाहते हैं: सत्यापन, क्रमबद्धता आदि रेल 4 में, आप कर सकते हैं वास्तव में नई barebones ActiveModel::Model का उपयोग कर सबकुछ शामिल करें।
इससे आपको रेलवे मॉडल के रूप में अपनी JSON सेवा का उपयोग करने का अधिक तरीका मिलेगा।
रिकॉर्ड के लिए, वास्तव में इस तरह की चीज को लागू करने में मेरा अनुभव एक एपीआई एपीआई तक पहुंचने के लिए एक एपीआई रैपर (कार्यों में) बनाने के लिए सीमित है। रैपर में एक कक्षा है जिसमें एपीआई को प्रश्नों को सत्यापित करने के लिए ActiveModel validators शामिल हैं। मुझे ActiveModel validators वास्तव में यह गारंटी देने के लिए उपयोगी पाया गया है कि API को सही तरीके से एक्सेस किया गया है, लेकिन रैपर केवल एपीआई से रिकॉर्ड्स प्राप्त करने के लिए है, न कि वास्तव में उन्हें बनाने या अपडेट करने के लिए, इसलिए इंटरफ़ेस जो अपेक्षा करता है उससे काफी आसान है आप इमारत करेंगे
इस तरह के एक व्यापक उत्तर के लिए धन्यवाद। सौभाग्य से, जेएसओएन सेवा रीस्टफुल है, यह सिर्फ यह है कि यह ActiveResource द्वारा अपेक्षित तरीके से प्रतिक्रिया नहीं देता है। मैं अब सक्रिय संसाधन से बचूंगा कि मुझे पता है कि यह मर चुका है, और इसके बजाय आपने जो डीज़ोन आलेख लिखा है उसे पढ़ा जाएगा। एक बार फिर धन्यवाद! – gjb
ओह यह अच्छी खबर है!उस मामले में, कार्य बहुत मुश्किल नहीं होना चाहिए। भले ही आप ActiveResource का उपयोग नहीं कर रहे हैं, आप यह देखने के लिए कोड को देख सकते हैं कि यह कैसे काम करता है। –
यदि आप अभी भी इस पर काम कर रहे हैं, तो कुछ अन्य रत्न जो उपयोगी हो सकते हैं: https://github.com/filtersquad/api_smith https://github.com/remiprev/her https://github.com/ apotonick/roar –