加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 19:46:47 所属栏目:百科 来源:网络整理
导读:我是rails的世界,我正在尝试构建一个应用程序,只需让我根据用户输入在Amazon和这些网站上搜索内容. 我做了一些reasearch,似乎httparty宝石是一个好的开始的地方?迄今发现的文件并不是最好的.他们并不真的给我很多信息(在哪里放码等). 有没有任何现有的教程
我是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可以从中工作.

希望有帮助!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读