如何创建一个Ruby应用程序REST API?(How to create a REST API f

2019-09-03 23:59发布

我想知道如何提供一个REST API Ruby应用程序。 我可以编写基于Ruby的TCPSERVER API的东西,但似乎有点低的水平。 你是否认为这将是一个很好的解决方案? 或者你推荐一个更好的方法吗?

Answer 1:

您可以使用西纳特拉很快写微小的,集中的Web应用程序和轻量级的REST服务。

在文档部分,他们强调了几个关于此事的视频:

  • 亚当·威金斯和布雷克Mizerany目前西纳特拉和RESTClient实现在2008年RubyConf的 。 讲座详情Sinatra的基本理念和使用Sinatra和构建真实世界的应用体现。

  • 亚当键和务实的程序员已经开始了一系列的截屏上西纳特拉。 前两分集介绍创建一个小的Web应用程序并创建一个REST服务。 $ 5流行。

您还可以使用轨道为好,但是这是一个有点矫枉过正?



Answer 2:

有设计方法 - 一个RESTful API时所涉及若干层,并且在每一层有几种有效的方法。

TCPSERVER确实是非常低的水平,因为你必须自己实现不推荐使用HTTP协议。

一是加大将机架,这需要所有低级别的HTTP细节。 这是什么样的Rails的Ruby的所有web框架,西纳特拉或Ramaze引擎盖下使用。 它还可以确保你的应用软件可在各种应用服务器,如汽车,薄或独角兽。

但是,即使架仍处于低位水平,它为您提供了HTTP,但更高层次的框架,把样板出典型的网络编程。 对于一个API,你可以看看像西纳特拉最小的框架,或专为喜欢的API设计的框架葡萄或Rails的API :: 。 这些就已经假设一个RESTful风格的API,所以你会发现他们是天作之合。

典型RESTful API中的特征在于具有基于HTTP方法(动词)等GET那些鉴定可猜测(约定驱动)的网址,和操作资源,POST,PUT,DELETE和补丁。 要真正拥抱REST的精神,因为它是由Roy Fielding描述然而,你可以朝着更加完整的“超媒体” API移动。 最明显的区别是,响应更自成一体。 它们包含相关资源的链接,而不是仅仅的数字标识符明确定义的媒体类型(由自己或由现有规格的定义)。 同样响应包含描述可以执行的操作模板/表格。 (还有更多的,但在表面上的水平这是你会发现什么。)

这使得API更容易找到,都是由人和机器,它允许更大的自由度在不断发展的API。 有可能是一个性能缺点,因为客户通常需要做更多的要求来达到同样的事情,但是这可以通过深思熟虑的设计和缓存来防止。 加纳是专门用来提供方便的服务器端缓存。

您可以定义自己的应用自己的媒体类型,常见于JSON或XML的顶部,或者你可以看一下现有的规范,尤其是收藏+ JSON , HAL和JSON-API 。 看来目前HAL具有最大的牵引力,与几个库在各种平台上使用。

有貌似不是一大堆各地的JSON API发生的事情,而是两个signifacnt项目::加载ActiveModel串行器和灰烬数据,都采用(并在同一时间,开发)这种格式,这意味着它可能会成为一个受欢迎的选择在Ruby / Rails的世界。

编辑 :错字



Answer 3:

我使用过屈开发简单的REST的解决方案。

事情是西纳特拉在许多方面非常灵活。 你可以建立你的项目结构,你更喜欢的方式。 Usualy我们有一个lib / tmp目录/公共/目录和config.ru和app.rb文件,但我sayd你可以建立任何你想要的。

要记住的是,西纳特拉不是一个通常的MVC只是因为德M(模式)。 供您使用西纳特拉为简单的CRUD web应用程序,你需要简单地加载一个宝石。

require 'datamapper'

或其他您所选择像sqlite, sequel, ActiveRecord, ...

瞧,你在你的末日了一个ORM。

在西纳特拉你定义服从四个主要提出了GET,PUT POST和删除路由。


require 'rubygems'
require 'sinatra'

get '/' do
  erb :home
end

get '/API/*' do
  api = params[:splat]
  @command_test = api[0]
  @command_helo = api[1]
  #...
  def do_things(with_it)
    #...
  end
  #...
end

__END__

@@home

helo

还有你得到了IDEIA :)

最后。 学习西纳特拉不是因为它简单浪费时间,对什么是Web编程是因为它给了(我)的基础。 我认为,在不久的将来,将有可能“注入”西纳特拉的应用程序(机架应用程序)为Rails3中的项目。

看看到github上,在那里你会发现许多项目与西纳特拉建成。 进一步的阅读结账西纳特拉::基地。



Answer 4:

对于简单的REST API我也会考虑直接针对机架库工作(即你可能不需要像西纳特拉的框架)。 路由例如可以是简单的情况下,很容易。 我在这里把一个小例子: https://gist.github.com/4685445



文章来源: How to create a REST API for a Ruby application?
标签: ruby rest