使用HTTParty gem创建端点(Rails5)

时间:2017-03-08 00:34:16

标签: ruby-on-rails json httparty

我对如何处理这个问题感到有些困惑。基本上我是在尝试更多地了解Angular on Rails,所以我在API模式下使用Rails - 但是,目前,我正在尝试在非API版本的Rails I中构建API启动(不太相关,但我很好奇如何让它为两者工作)。

非常基本的测试,我喜欢他的 /steam/:id端点(在此示例中)并获取返回值 GetPlayedSummaries。已安装HTTParty,并在终端中工作。

class SteamController < ApplicationController
  @steamKey = "{REDACTED}"
  @baseUrl = "http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key='+@steamKey+'&steamids='+@steamId+'"

  def get_player_summaries
    @steamId = params[:id]
    puts @baseUrl
    @games = HTTParty.get(@baseUrl).to_json
    puts response.body, response.code, response.message, response.headers.inspect
  end

end

这是我非常基本的控制器。实际上我没有理由将steamKey分开,但它有助于鼓励我需要帮助的地方。

最初我有@baseUrl @baseUrl = "http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=#{@steamKey}+'&steamids=#{@steamId}"

对于完整版本,我得到bad argument (expected URI object or URI string)指向@baseUrl所以我觉得我没有正确地包含它。我正在努力,但即使它工作,我不太确定如何制作它所以它只是作为纯JSON将它扔进UI?我已经使用JSON Builders等很多其他元素完成了这个,但是那个数据库数据。这只是一个API调用。

洞察/文件我可以查看吗?

编辑:我认为我使用@steamKeyThis SO Article. @相关的问题甚至被传递到get_player_summaries

1 个答案:

答案 0 :(得分:0)

正如我在编辑中所提到的,我能够找到解释如何正确使用URL的文章。

我的工作代码是:

class SteamController < ApplicationController

  def initialize
    @steamKey = "{REDACTED}"
    @baseUrl = "http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key="+@steamKey+"&steamids="
  end

  def get_player_summaries
    @playerUrl = @baseUrl + params[:id]
    @games = HTTParty.get(@playerUrl).to_json
    puts response.body, response.code, response.message, response.headers.inspect
    render json: @games
  end

end

响应速度有点慢,但可能是C9的问题。