在Rails中与第三方API连接?(打开URL和解析XML/JSON)

Chr*_*ane 18 xml api json ruby-on-rails

我正在开发一个需要与多个第三方API接口的Rails项目.我对Rails很陌生,我之前从未这样做过,所以我在这里缺少一些基本信息.具体来说,简单查询外部URL的首选Rails方式是什么?

在PHP世界中,它是cURL.您可以获取资源URL,向其中输入cURL,然后开始处理响应,无论是XML,JSON等.

那么,Rails中的cURL等价物是什么? 在我们处理它时,解析XML和JSON响应的首选方法是什么? 我的直觉是谷歌周围的一些Ruby宝石来完成工作,但这是一个实际的问题,如果Rails社区已经为这类问题找到了一个可靠的解决方案,我不会感到惊讶.

如果它具有任何上下文价值,我计划将这些第三方API交互作为夜间cronjobs运行,可能全部打包为自定义rake任务.

感谢您分享您的专业知识.

loo*_*non 10

打开网址,你可以使用 open-uri

只是

require 'open-uri'
file_handle = open("http://google.com/blah.xml")
Run Code Online (Sandbox Code Playgroud)

解析xml你可以使用Nokogiri

$ gem install nokogiri

document = Nokogiri::XML(file_handle)
document/"xpath/search"
Run Code Online (Sandbox Code Playgroud)

非常强大的库,可以对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
Run Code Online (Sandbox Code Playgroud)

看到这个问题: 如何使用Ruby on Rails解析JSON?


muf*_*sta 10

在一个完美的世界中,你想要使用的API已经存在一个gem,你只需要使用它.否则,您有几个选择:

解析JSON通常非常简单.对于XML,如另一个答案中所述,Nokogiri可能是要走的路.