2

我对 Rails 和 REST 很陌生。我想在 Rails 中使用 REST API。我找到了一种使用 ActiveResource 的简单而标准的方法。

我要使用的 API 是:https ://api.pinterest.com/v2/popular

直接访问此 API 时,响应为:{“message”:“请升级您的应用!”,“错误”:“身份验证失败:请升级您的应用!”}

因此,当我从 RAILS 使用它时,我想要相同的结果。

为了做同样的事情,我生成了一个流行的模型并将其代码修改为:

class Popular < ActiveResource::Base
  self.site = "https://api.pinterest.com/v2/popular"
  self.format = :json
end

然后,我生成了一个作为 Populars 的控制器并将其代码修改为:

class PopularsController < ApplicationController  
  def index
    @popular = Popular.all
    render :json => @popular
  end
end

然后在 routes.rb 中,我添加了

resources :populars

在运行“http://localhost:3000/populars”时,它在浏览器中显示“null”。虽然预期结果是 {"message": "Please upgrade your app!", "error": "Authentication failed: Please upgrade your app!"}

请指导,我哪里跑错了。

请提供在 Rails 中使用 HTTPS REST API 的特定指南。如何使用 OAuth 使用它们?

除了通过 ActiveResource 使用它之外,还有其他更好的方法吗?

4

1 回答 1

1

如果你输入控制台

1.9.2p320 :041 > Popular.collection_path
 => "/v2/popular/populars.json" 

因此,按照惯例,您在服务器端有错误的路线。

您也可以在控制台中启用记录器

ActiveResource::Base.logger = Logger.new(STDERR)

你可以看到下一个:

1.9.2p320 :042 > Popular.all
I, [2012-08-08T01:51:36.725766 #1371]  INFO -- : GET https://api.pinterest.com:443/v2/popular/populars.json
I, [2012-08-08T01:51:36.725878 #1371]  INFO -- : --> 404 NOT FOUND 17 (1936.9ms)
 => nil 

所以这就是结果为零的原因。

https://github.com/albertopq/oauth-activeresource - 试试这个 gem 来使用带有 oauth 的 activeresource。

于 2012-08-07T22:54:41.073 回答