我做了一些reasearch,似乎httparty宝石是一个好的开始的地方?迄今发现的文件并不是最好的.他们并不真的给我很多信息(在哪里放码等).
有没有任何现有的教程或代码示例,我可以使用或看看给我一个更好的想法,这个东西如何工作?
解决方法
首先,如果您是Rails的完整新手,那么作为第一步,我建议采取并行的方法来解决这个问题,有两个方面:
>了解Rails
>了解如何在Ruby中与API进行交互(提出请求和解析响应)
这是两个独立的问题,尽管你们可能最终将它们结合在一起,最好是首先将它们隔离开来.
对于第一个,我建议先写一些简单的应用程序,以了解事情的工作原理.即使只有一个简单的应用程序需要一定量的用户交互,可能会将记录保存到数据库等中,这与从API消费数据分开的问题.在Rails上有无数的教程,只是提到一个,你可能会尝试Michael Harti的Learn Web Development with Rails作为起点.
消耗API数据的第二点与设计应用程序本身的问题不同.要了解更多关于这个问题的方面,我建议使用一个流行的API客户端gem(如你所提到的)HTTParty,我使用我自己.而不是立即尝试在Rails应用程序中使用HTTParty方法,作为一个练习,我建议在控制台(irb)中播放一下.如果您安装gem(gem install httparty),则可以从控制台中请求它(需要“httparty”),并立即从API中发出请求并解析响应.
例如.:
irb(main):001:0> require 'httparty' => true irb(main):002:0> response = HTTParty.get('http://twitter.com/statuses/public_timeline.json') => ...@H_404_24@一旦你对Rails有了更多的了解,并且在Ruby中访问了一个API,那么你可以继续实际构建应用程序本身.根据API对您的要求的复杂程度,您可以在Rails应用程序中构建API请求的几个方案:
>直接从控制器操作使请求成为Rails应用程序的一部分.如果您仅在有限数量的服务上支持非常有限数量的请求类型(例如简单搜索),那么这只是可以.任何更复杂的事情,你的控制器会变胖,这是MVC框架中的一个no-no.
>创建一个单独的ruby类(通常称为API包装器)来组合来自API的请求和解析响应的方法.使用像HTTParty这样的宝石,您可以通过在类中添加包含HTTParty的行来实现,该行将模块添加到类中.有很多关于如何做到这一点的例子,here is one.
>使用专用的宝石来访问特定的API,或者创建一个(或更多)自己.有最受欢迎的服务的宝石,例如Twitter,Linkedin,Flickr等.详见this list of API client gems.这消除了与API进行交互的许多痛苦,但只适用于所有服务的一个子集.你提到你正在考虑使用HTTParty,我可以推荐我自己使用它.有其他的选择,如Faraday(参见this list of HTTP clients更多),但我发现大多数任务,HTTParty将做得很好.文档可能有点稀疏,但有一堆examples可以从中工作.
希望有帮助!