我想使用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,而不是像上面所述对其进行硬编码。
答案 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轻松查询网络服务。
这是你需要做的事情
通过在Gemfile中指定gem 'wrest'
来安装Wrest gem。
要查询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
也支持缓存。