ruby-on-rails – 使用rails消耗Web服务/ apis

我是rails的世界,我正在尝试构建一个应用程序,只需让我根据用户输入在Amazon和这些网站上搜索内容.

我做了一些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')
=> ...

一旦你对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可以从中工作.

希望有帮助!

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...