【问题标题】:How to get API and manipulate it如何获取 API 并对其进行操作
【发布时间】: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

标签: ruby api http web


【解决方案1】:

Net::HTTP:

require 'net/http'
uri = URI('http://example.com/index.html?count=10')
Net::HTTP.get(uri) # => String

然后你可以对数据做任何你想做的事情。例如,如果 API 返回 JSON,您可以使用 Ruby 的 JSON module 解析字符串。

【讨论】:

  • 除了在我的代码中添加 require "net/https" 之外,我还需要这样做吗?
  • @Pabi 不,就是这样。我更新了答案以包含require 'net/http'
  • @Pabi 这太宽泛了,无法回答。 Net::HTTP.get(uri) 以字符串的形式返回数据,因此您可以根据需要对其进行操作。例如,如果 API 返回 JSON,您可以使用 json module 将其解析为 JSON。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-18
  • 2013-11-11
  • 1970-01-01
  • 2020-08-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多