让CoinMarketCap API与Ruby on Rails 2020合作



在coinmarketcap将其API变成分层免费/付费之前,您可以让它与一起工作

class Currency < ApplicationRecord 
def current_price`
url = 'https://api.coinmarketcap.com/v1/ticker/'
request = HTTParty.get(url + self.slug)
response = JSON.parse(request.body)
end
end

但现在它需要一个API密钥,你可以在基本的免费层上获得,但我不知道在上面的代码中在哪里实现API密钥?就像我知道的那样,我需要一个get并包含API密钥,但他们只提到如何使用Python C#来实现这一点

文档明确指出:

您可以通过以下两种方式之一在REST API调用中提供您的API密钥:

  • 首选方法:通过名为X-CMC_PRO_API_KEY的自定义标头
  • 方便的方法:通过名为CMC_PRO_API_KEY的查询字符串参数

HTTParty提供标头是微不足道的:

url = 'https://pro-api.coinmarketcap.com/v1/ticker/'
request = HTTParty.get(url + self.slug, 
headers: { "X-CMC_PRO_API_KEY" => Rails.application.credentials.coinmarketcap[:pro_api_key] }
)

但您确实应该避免从您的模型进行HTTP调用,因为它已经承担了许多责任。创建一个触及应用程序边界的单独类:

class CoinMarketCapClient
include HTTParty
format :json
base_uri "https://pro-api.coinmarketcap.com"
attr_reader :api_key  
def intialize(api_key:)
@api_key = api_key
end
def ticker(slug, **opts)
self.class.get("/ticker/#{slug}", headers: {
"X-CMC_PRO_API_KEY" => api_key
})
end
end

最新更新