Rails读取API响应头

时间:2014-07-02 13:26:07

标签: ruby-on-rails ruby

我熟悉API。首先,我使用Forecast API

在文档中,您将找到标题为"响应标题"的部分。它们是什么,我如何使用它们?

另外,要获得响应,它表示您需要传递API密钥以及lat和long数据。但是没有API密钥应该保密吗?有人会发现请求的内容吗?

这是我的代码:

预测模型

require 'json'
class Forecast
  include HTTParty
  debug_output $stdout
  default_params :apiKey => 'xxxxxxxxxxxxxxxxxxxxxxxxx'
  base_uri "api.forecast.io"
  format :json

  def self.get_weather(api,lat,long)
    @response = get("/forecast/#{apiKey}/#{lat},#{long}")
  end

  def self.show_weather
    JSON.parse(@response.body)
  end

end

预测控制器

def index
    @weather = Forecast.get_weather("28.5355", "77.3910")
    @response = Forecast.show_weather
end

预测视图

<%= @response["currently"]["summary"] %>

1 个答案:

答案 0 :(得分:2)

你在这里问了几个不同的问题。

  • 响应标头:它们是HTTP响应的一部分,包含有关响应的信息。例如,他们可能会告诉您响应的MIME类型 - 例如。 Content-Type: application/json。在这种情况下,Forecast会使用它来告诉您已完成的API调用次数(X-Forecast-API-Calls)以及它们响应的时间(X-Response-Time)以及一些缓存信息。

  • API密钥:是的,这些应该保密。 Forecast API适用于HTTPS,因此(理论上)您的API密钥应该对嗅探网络流量的人保密。主要的危险是将它保存在您的代码中,例如,将其提交给GitHub。您应该找到一种更安全的方式来存储API密钥。一个例子虽然不完美,但却将它作为一个环境变量。

我希望有所帮助。