2011-06-03 40 views
18

我正在開發一個Rails項目,它需要與多個第三方API進行接口。我對Rails很陌生,之前我從來沒有這樣做過,所以我在這裏缺乏一些基本的信息。具體而言,簡單查詢外部URL的首選Rails方式是什麼?在Rails中與第三方API接口? (打開網址和解析XML/JSON)

在PHP世界中,它是cURL。你拿什麼資源的URL,扔cURL,並開始處理響應,無論是XML,JSON等。

那麼,Rails中的cURL等價物是什麼?雖然我們在這,解析XML和JSON響應的首選方法是什麼?我的直覺是,爲了完成工作,我的一些Ruby Ruby的寶石周圍,但這是一個實際問題,我不會感到驚訝,如果Rails社區已經制定出一種經過驗證的真正的解決方案這種問題。

如果它具有任何上下文的價值,我打算運行這些第三方API交互作爲夜間cronjobs,可能全部打包成自定義rake任務。

感謝您分享您的專業知識。

+1

我發現這個演示文稿是一個有用的開始的地方在過去。注意:今天可能有更新的方法/寶石。 http://www.slideshare.net/pengwynn/json-and-the-apinauts – Brian 2011-06-03 15:13:16

回答

10

打開網址,就可以使用open-uri

只是

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

解析XML就可以使用引入nokogiri

$ gem install nokogiri

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

非常強大的庫,可以做各種搜索和修改兩者XML和HTML

相同的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

open-uri和Nokogiri像冠軍一樣工作。謝謝! – 2011-06-07 21:06:23

10

在一個完美的世界中,您想要使用的API已經存在一個gem,您只需要使用它。否則,您有幾種選擇:

解析JSON通常非常簡單。對於XML來說,正如另一個答案中所述,Nokogiri可能是要走的路。