2011-06-03 10 views
18

मैं एक रेल परियोजना पर काम कर रहा हूं जिसे एकाधिक तृतीय-पक्ष एपीआई के साथ इंटरफेस करने की आवश्यकता होगी। मैं रेल के लिए काफी नया हूं, और मैंने पहले कभी ऐसा नहीं किया है, इसलिए मुझे यहां कुछ बुनियादी जानकारी की कमी है। विशेष रूप से, बाहरी URL से पूछताछ करने के पसंदीदा रेलवे तरीका क्या है?रेल में तीसरे पक्ष के एपीआई के साथ इंटरफेसिंग? (यूपीएल यूआरएल और पार्सिंग एक्सएमएल/जेएसओएन)

PHP दुनिया में, यह curl था। आप जो भी संसाधन यूआरएल लेते हैं, उस पर कर्ल फेंकते हैं, और प्रतिक्रिया को प्रोसेस करना शुरू करते हैं, चाहे वह एक्सएमएल, जेएसओएन, आदि

तो, रेल में समकक्ष कर्ल क्या है? जबकि हम इसमें हैं, XML और JSON प्रतिक्रियाओं को पार्स करने का पसंदीदा तरीका क्या है? मेरी प्रवृत्ति कुछ रूबी रत्नों के लिए नौकरी पाने के लिए Google के आसपास है, लेकिन यह एक व्यावहारिक समस्या है कि मुझे आश्चर्य नहीं होगा अगर रेल समुदाय ने पहले से ही इस तरह के एक कोशिश किए गए और सही समाधान का काम किया है मुसीबत।

यदि यह किसी भी प्रासंगिक मूल्य का है, तो मैं इन तीसरे पक्ष के एपीआई इंटरैक्शन को रात के cronjobs के रूप में चलाने की योजना बना रहा हूं, शायद सभी कस्टम रेक कार्यों के रूप में पैक किया गया है।

अपनी विशेषज्ञता साझा करने के लिए धन्यवाद।

+1

मुझे यह प्रस्तुति अतीत में सहायक शुरुआत करने के लिए मिली। नोट: आज नए तरीके/रत्न हो सकते हैं। http://www.slideshare.net/pengwynn/json-and-the-apinauts – Brian

उत्तर

10

खोलने यूआरएल के लिए आप उपयोग कर सकते open-uri

सिर्फ

require 'open-uri' 
file_handle = open("http://google.com/blah.xml") 

एक्सएमएल पार्स करने के लिए आप Nokogiri उपयोग कर सकते हैं

$ gem install nokogiri

document = Nokogiri::XML(file_handle) 
document/"xpath/search" 

बहुत शक्तिशाली पुस्तकालय, सभी प्रकार के कर सकते हैं दोनों के लिए खोज और संशोधन की XML और HTML

एचटीएमएल के लिए एक ही Nokogiri::HTML

वहाँ भी वहाँ बाहर JSOM समर्थन भी

चेकआउट के बहुत सारे Nokogiri भी Hpricot XML/HTML

रेल में JSON के लिए के लिए अच्छा है

parsed_json = ActiveSupport::JSON.decode(your_json_string) 

parsed_json["results"].each do |longUrl, convertedUrl| 
    site = Site.find_by_long_url(longUrl) 
    site.short_url = convertedUrl["shortUrl"] 
    site.save 
end 

यह प्रश्न देखें: How do I parse JSON with Ruby on Rails?

+0

ओपन-यूरी और नोकोगिरी एक चैंप की तरह काम करते थे। धन्यवाद! –

10

एक परिपूर्ण दुनिया में, आप जिस एपीआई का उपयोग करना चाहते हैं उसके लिए एक मणि पहले से मौजूद है, और आप इसका उपयोग करेंगे।

  • ActiveResource आप एपीआई का उपयोग करना चाहते की जटिलता के आधार के लिए कोई मतलब हो सकता है: अन्यथा, आप कुछ ही विकल्प हैं।उदाहरण के लिए, यहाँ using ActiveResource to connect to the Twitter API
  • Net::Http के एक पुराने (और अब कार्यात्मक) उदाहरण है निचले स्तर है, लेकिन निश्चित रूप से
  • Curb libcurl का उपयोग करता है शुद्ध/http के लिए एक आवरण बातें किया पाने के लिए है चाल
  • open-uri करता है

पार्सिंग जेएसओएन आमतौर पर बहुत सरल है। एक्सएमएल के लिए, जैसा कि एक और जवाब में कहा गया है, नोकोगिरी शायद जाने का रास्ता है।

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