最简单的方法来使用Rails REST API

时间:2014-06-28 19:07:17

标签: ruby-on-rails ruby api rest

我想使用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)。您现在应该有一个名为'Braves'的新团队(请参阅上面代码中的Braves名称)!现在我知道它正在运行,我可以继续使用其他功能,比如在我的应用程序中创建团队并将这些信息发送给TeamSnap,而不是像上面所述对其进行硬编码。

2 个答案:

答案 0 :(得分:1)

您可以使用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)

答案 1 :(得分:0)

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

这是你需要做的事情

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

  2. 要查询Web服务,请使用如下语法

  3. [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也支持缓存。