15

我是 Rails 世界的新手,我正在尝试构建一个应用程序,让我可以根据用户输入在亚马逊和此类网站上搜索内容。

我做了一些研究,似乎 httparty gem 是一个不错的起点?到目前为止,我发现的文件并不是最好的。他们并没有真正给我很多信息(将代码放在哪里等)。

是否有任何现有的教程或代码示例可供我使用或查看以让我更好地了解这个东西是如何工作的?

4

1 回答 1

31

我现在正在开发这样的应用程序,所以让我提供一些想法。

首先,如果您是 Rails 的新手,那么作为第一步,我建议您采用并行方法来解决这个问题,包括两条轨道:

  1. 了解 Rails
  2. 了解如何在 Ruby 中与 API 交互(发出请求和解析响应)

这是两个独立的问题,尽管您最终可能会一起实施它们,但最好先孤立地考虑它们。

对于第一个,我建议先编写几个简单的应用程序,以了解事情的运作方式。即使只有一个简单的应用程序也需要一定数量的用户交互,可能会将记录保存到数据库等,这些问题与从 API 消费数据是分开的。关于 Rails 的教程数不胜数,但仅举一例,您可以尝试 Michael Harti 的Learn Web Development with Rails作为起点。

第二点,消费 API 数据,与设计应用程序本身的问题不同。要了解有关问题的这方面的更多信息,我建议使用我自己使用的流行的 API 客户端 gem(如您提到的)HTTParty。与其立即尝试在 Rails 应用程序中使用 HTTParty 方法,不如作为练习,我建议在控制台 (irb) 中玩一下。如果您安装 gem ( gem install httparty),您可以require '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 请求:

  1. 直接从控制器操作使请求成为 Rails 应用程序本身的一部分。如果您只在有限数量的服务上支持非常有限数量的请求类型(例如简单搜索),这实际上是可以的。任何更复杂的东西,你的控制器都会变胖,这在 MVC 框架中是一个禁忌。
  2. 创建一个单独的 ruby​​ 类(通常称为 API 包装器)以将用于发出请求和解析来自 API 的响应的方法组合在一起。使用 HTTParty 之类的 gem,您只需include HTTParty在类中添加一行,即可将模块添加到类中。有很多关于如何做到这一点的例子,这里有一个
  3. 使用专门的 gem 来访问特定的 API,或者自己创建一个(或多个)。大多数流行服务都有 gem,例如TwitterLinkedinFlickr等。有关更多信息,请参阅此 API 客户端 gem 列表。这消除了与 API 交互的许多痛苦,但仅适用于所有服务的子集。

您提到您正在考虑使用 HTTParty,我可以推荐它,因为我自己正在使用它。有诸如Faraday之类的替代方案(有关更多信息,请参阅此 HTTP 客户端列表),但我发现 HTTParty 可以完成大多数任务。文档可能有点稀疏,但有很多示例可供您参考。

希望有帮助!

于 2012-10-29T04:20:56.933 回答