【问题标题】:Simplest way to consume Rails REST API使用 Rails REST API 的最简单方法
【发布时间】:2014-08-19 15:19:11
【问题描述】:

我想使用 API 进行简单调用。我尝试实现可能已被弃用的 ActiveResource(参见此处:Consuming REST API from Rails Application)。

我已经拥有 API 的访问令牌,当我从控制台逐步完成该过程时(请参阅快速入门指南:https://github.com/teamsnap/apiv2-docs/wiki/1.-Authentication),我可以开始工作(例如添加新团队)。但是,我似乎无法弄清楚如何在 Rails 中实现它。我想从简单的事情开始,比如在页面上显示我的团队名称 - 就是这样!

这里是 API 信息:https://github.com/teamsnap/apiv2-docs/wiki/Getting-Started-Guide

我想既然我已经有一个令牌(我通过命令行教程获得),我不需要每次都包含我的用户名和密码。这可能不正确。

如果有人可以详细说明如何设置,我将不胜感激!我对rails相当陌生,所以请随时提供尽可能多的信息。谢谢!

编辑: 感谢 Uri,它正在工作。为了创建 API 的简单测试,我创建了一个空白的 show.html.erb 页面。在 teams_controller.rb 中,我将 Uri 的代码添加到“show”方法中,并添加路由,如下所述:

teams_controller.rb

def show
RestClient.post("https://api.teamsnap.com/v2/teams", '{"team": {"team_name": "Braves", "sport_id": 1, 
  "timezone": "Mountain Time (US & Canada)", "country": "United States", "zipcode": 80302}}',content_type: :json,
   x_teamsnap_token: 'your_token_goes_here_in_quotes')
end

routes.rb

get 'teams/show'
post 'teams/show'

要测试 api,请将浏览器导航到 localhost:3000/teams/show 。这将为您手动“触发” show 方法。返回 Teamsnap (http://go.teamsnap.com/team/dashboard) 上的 Teams 仪表板。您现在应该有一个名为“Braves”的新团队(请参阅上面代码中的 Braves 名称)!现在我知道它正在工作,我可以继续使用其他功能,例如在我的应用程序中创建团队并将该信息发送到 TeamSnap,而不是像上面所述的那样对其进行硬编码。

【问题讨论】:

    标签: ruby-on-rails ruby api rest


    【解决方案1】:

    您可以使用wrest gem 轻松查询网络服务。

    这就是你需要做的事情

    1. 通过在您的 Gemfile 中指定 gem 'wrest' 来安装 Wrest gem。

    2. 要查询 Web 服务,请使用类似这样的语法

    [ GET ]     https://api.github.com/repos/c42/wrest/issues'.to_uri.get.deserialize

    [POST]   'http://my.api.com'.to_uri.post('YAML encoded body', 'Content-Type' => 'text/x-yaml')

    最好的部分是wrest还支持缓存。

    【讨论】:

      【解决方案2】:

      您可以使用rest-client gem 让您的通话更轻松(尽管简单的net/http 也可以)

      RestClient.post("https://api.teamsnap.com/v2/teams", 
        '{"team": {"team_name": "West Nile Mosquitos", "sport_id": 1, "timezone": "Mountain Time (US & Canada)", "country": "United States", "zipcode": 80302}}',
        content_type: :json, x_teamsnap_token: my_token)
      

      【讨论】:

      • 谢谢@Uri!我会试试这个。你能告诉我这段代码在控制器中的位置吗?
      • 不,因为我不熟悉您的应用程序...我想您需要信息的地方...
      • 好的,谢谢。会试一试并回复您。
      猜你喜欢
      • 2017-10-19
      • 2012-01-08
      • 1970-01-01
      • 1970-01-01
      • 2012-03-28
      • 2014-05-15
      • 2010-09-19
      • 2019-05-22
      • 2011-02-22
      相关资源
      最近更新 更多