2012-10-28 17 views
14

उपभोग करने के लिए रेल का उपयोग करना मैं रेल की दुनिया में नया हूं और मुझे ऐप बनाने की कोशिश कर रहा हूं ताकि मुझे अमेज़ॅन पर और उपयोगकर्ताओं के इनपुट के आधार पर ऐसी साइटों को खोजने की अनुमति मिल सके।वेब सेवाओं/एपीआई

मैंने थोड़ा पुनर्विक्रय किया है और ऐसा लगता है कि httparty मणि शुरू करने के लिए एक अच्छी जगह है? दस्तावेज़ अब तक पाए गए हैं, हालांकि सर्वश्रेष्ठ नहीं हैं। वे वास्तव में मुझे बहुत सारी जानकारी नहीं देते हैं (कोड कहां रखना है)।

क्या वहां कोई मौजूदा ट्यूटोरियल है या कोड उदाहरण हैं जिन्हें मैं या तो उपयोग कर सकता हूं या यह देखने के लिए एक बेहतर विचार देने के लिए एक विचार कर सकता हूं कि यह काम कैसे काम करता है?

+0

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

उत्तर

29

मैं इस तरह के ऐप पर काम कर रहा हूं, इसलिए मुझे कुछ विचार दें।

सबसे पहले, अगर आप रेल के लिए एक पूर्ण नवागंतुक रहे हैं, तो एक पहला कदम मैं दो पटरियों के साथ, समस्या के लिए एक समानांतर दृष्टिकोण सुझाव देंगे के रूप में:

  1. जानें रेल के बारे में जानें कैसे रूबी

में एक API के साथ बातचीत (अनुरोध करने और प्रतिक्रियाओं को पार्स) के बारे में ये दो अलग-अलग समस्याएं हैं, और हालांकि आप उन्हें एक साथ लागू करने अंत हो सकता है, यह पहली बार अलगाव में उनके बारे में सोचने के लिए सबसे अच्छा है।

पहले के लिए, मैं पहले कुछ सरल ऐप्स लिखने का सुझाव देता हूं ताकि चीजें कैसे काम करती हैं। यहां तक ​​कि केवल एक साधारण ऐप के लिए उपयोगकर्ता इंटरैक्शन की एक निश्चित मात्रा की आवश्यकता होगी, संभवतः डीबी, आदि को रिकॉर्ड सहेजना होगा, जो एपीआई से डेटा लेने से अलग हैं। रेल पर वहां ट्यूटोरियल की एक सतत संख्या है, लेकिन केवल एक का उल्लेख करने के लिए, आप माइकल हार्टी के Learn Web Development with Rails को शुरुआती बिंदु के रूप में आजमा सकते हैं।

दूसरा बिंदु, उपभोग करने वाला एपीआई डेटा, ऐप को डिजाइन करने की समस्याओं से अलग है। समस्या के इस पहलू के बारे में और जानने के लिए, मैं एक लोकप्रिय एपीआई क्लाइंट मणि (जैसा आपने बताया है) HTTParty का उपयोग करने का सुझाव दूंगा, जिसका मैं स्वयं उपयोग करता हूं। एक रेल ऐप में HTTParty विधियों का तुरंत उपयोग करने की बजाय, एक अभ्यास के रूप में मैं एक कंसोल (आईआरबी) में थोड़ा सा खेलना चाहता हूं। यदि आप मणि (gem install httparty) स्थापित करते हैं तो आपको कंसोल से इसे (require 'httparty') की आवश्यकता हो सकती है और तुरंत अनुरोध और एपीआई से प्रतिक्रियाएं पार्स कर सकते हैं।

उदा .:

irb(main):001:0> require 'httparty' 
=> true 
irb(main):002:0> response = HTTParty.get('http://twitter.com/statuses/public_timeline.json') 
=> ... 

एक बार जब आप मिल गया है और अधिक और रेल से परिचित रूबी में एक API में पहुंचने के साथ एक सा है, तो आप वास्तव में एप्लिकेशन को स्वयं के निर्माण के लिए आगे बढ़ना सकता है। कैसे जटिल एपीआई (रों) करने के लिए अपने अनुरोध होने जा रहे हैं पर निर्भर करता है, आप अपने रेल app में अपने API अनुरोधों की संरचना करने के लिए के रूप में कुछ ही विकल्प हैं:

  1. रेल एप्लिकेशन को स्वयं के अनुरोध हिस्सा बनाएं सीधे नियंत्रक कार्यों से। यह वास्तव में केवल ठीक है अगर आप केवल सीमित संख्या में सेवाओं के अनुरोध प्रकारों (जैसे सरल खोज) का समर्थन करने जा रहे हैं। कुछ और जटिल और आपका नियंत्रक वसा प्राप्त करेगा, जो एमवीसी ढांचे में नो-नो है।
  2. अनुरोध करने और API से प्रतिक्रियाओं को पार्स करने के तरीकों को समूहबद्ध करने के लिए एक अलग रूबी क्लास (आमतौर पर एक एपीआई रैपर कहा जाता है) बनाएं। HTTParty जैसे मणि के साथ आप कक्षा में include HTTParty लाइन जोड़ कर ऐसा कर सकते हैं, जो कक्षा में मॉड्यूल जोड़ता है। यह कैसे करें, here is one पर बहुत सारे उदाहरण हैं।
  3. विशिष्ट एपीआई तक पहुंचने के लिए एक समर्पित मणि का उपयोग करें, या एक (या अधिक) स्वयं बनाएं। सबसे लोकप्रिय सेवाओं के लिए रत्न हैं, उदा। Twitter, Linkedin, Flickr, आदि this list of API client gems और देखें। यह एपीआई के साथ बातचीत करने के बहुत सारे दर्द को दूर करता है, लेकिन केवल सभी सेवाओं के सबसेट के लिए काम करेगा।

आप उल्लेख करते हैं कि आप HTTParty का उपयोग करने की सोच रहे हैं, जिसे मैं अनुशंसा कर सकता हूं क्योंकि मैं इसे स्वयं उपयोग कर रहा हूं। Faraday जैसे विकल्प हैं (अधिक के लिए this list of HTTP clients देखें), लेकिन मुझे लगता है कि अधिकांश कार्यों के लिए HTTParty ठीक काम करेगा। प्रलेखन थोड़ा विचित्र हो सकता है, लेकिन examples का एक गुच्छा है जिसका आप काम कर सकते हैं।

आशा है कि मदद करता है!

+0

जो बिल्कुल सही था! धन्यवाद! – Keva161

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