【发布时间】:2015-10-31 13:25:34
【问题描述】:
用Ruby,没有Rails,怎么调用http://api.anapi.com/之类的API,然后得到一个值,然后检查是否大于5?
如果它包含一个名为“anarray”的数组,其中包含哈希,我想在其中一个哈希中获取键“key”的值。
我现在使用:
require "net/https"
require "uri"
uri = URI.parse("http://api.cryptocoincharts.info/tradingPair/eth_btc")
http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Get.new(uri.request_uri)
response = http.request(request)
puts response.body
我得到:#<StringIO:0x2cadb90>
想通了:
# http://ruby-doc.org/stdlib-2.0.0/libdoc/open-uri/rdoc/OpenURI.html
require 'open-uri'
# https://github.com/flori/json
require 'json'
# http://stackoverflow.com/questions/9008847/what-is-difference-between-p-and-pp
require 'pp'
buffer = open('http://api.cryptocoincharts.info/tradingPair/eth_btc').read
# api_key = "FtHwuH8w1RDjQpOr0y0gF3AWm8sRsRzncK3hHh9"
result = JSON.parse(buffer)
puts result["markets"]
# result.each do |user|
# puts "#{user['id']}\t#{user['name']}\t#{user['email']}"
# puts "Registered: #{user['created_at']}\n\n"
# end
# my_hash = JSON.parse('{"hello": "goodbye"}')
# puts my_hash["hello"] => "goodbye"
【问题讨论】:
-
没有必要使用 Rails。有大量的HTTP Clients 可以帮助您与 API 进行交互。或者你想知道如何在没有任何宝石的情况下做到这一点?
-
我不会使用 Net::HTTP,而是使用 OpenURI。它是一个更易于使用的界面,非常适合对 API 的简单调用。此外,您的现有代码没有错误或问题,只是您没有足够努力地解决问题。由于您使用 Net::HTTP 采取了更艰难的道路,因此您正在寻找可行的解决方案。更多的研究会让你走在前面。
-
如果你想通了,你应该把你的代码放到一个答案中,然后等到堆栈溢出的宽限期到期,然后选择它作为答案。不要将其添加到您的问题中;问题就是这个问题。答案是为了答案。
-
@theTinMan:open-uri 更友好的界面需要付出巨大的代价 :) sakurity.com/blog/2015/02/28/openuri.html