2009-11-02 33 views

回答

24

您可以使用Sinatra非常快速地编写小而集中的Web应用程序和轻量级REST服务。

documentation节他们突出就这一问题对夫妇的视频:

  • 亚当·威金斯和布雷克Mizerany目前西纳特拉和RestClientRubyConf 2008。谈话详细介绍了Sinatra的基本理念,并反思了使用Sinatra构建真实世界的应用程序。

  • Adam Keys和Pragmatic Programmers在Sinatra上启动了一系列screencasts。前两集包括创建一个小型Web应用程序并创建一个REST服务。 5美元的流行音乐。

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

+2

+1西纳特拉。 – 2009-11-02 16:07:20

7

我使用西纳特拉也开发简单的REST的解决方案。

事情是Sinatra在很多方面都非常灵活。您可以按照自己喜欢的方式构建自己的项目结构。 Usualy我们有一个lib/tmp /和public /目录以及一个config.ru和app.rb文件,但正如我所说,你可以建立任何你想要的。

要记住的是,Sinatra不仅仅是因为de M(模型)而是一个通常的MVC。对于简单CRUD Web应用程序使用sinatra,您只需加载一个gem即可。

require 'datamapper'

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

的,瞧你有你的下一个西纳特拉ORM。

在Sinatra下,您可以定义符合四个主要建议GET,PUT POST和DELETE的路线。


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 :)

最后。学习Sinatra并不是浪费时间,因为它简单并且因为它为我提供了什么Web编程的基础。 我想在不久的将来,将“注入”Sinatra应用程序(机架应用程序)到Rails3项目中是可能的。

看看github,你会发现许多用Sinatra构建的项目。 欲了解更多结帐Sinatra :: Base。

1

对于简单的REST API,我还会考虑直接对Rack机架库进行操作(即,您可能不需要像Sinatra这样的框架)。例如,路由对于简单的情况可能非常容易。我在这里举了一个小例子:https://gist.github.com/4685445

8

设计RESTful API时涉及到几个层,每层都有几个有效的方法。

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

上一步是Rack,它处理所有低级HTTP细节。这就是Rails,Sinatra或Ramaze等所有Ruby Web框架都在使用的底层。它还可以确保您的应用程序在各种应用程序服务器上运行,如Passenger,Thin或Unicorn。

但即使Rack仍然是低级别的,它给了你HTTP,但是更高层次的框架把典型的网络程序设计拿出来了。对于API,您可以查看像Sinatra这样的最小框架,或者专门为API设计的框架,如GrapeRails::API。这些将已经采用REST风格的API,所以你应该认为它们是非常合适的。

典型的RESTful API的特征是具有由可猜测(惯例驱动)URL标识的资源,以及基于HTTP方法(动词)(如GET,POST,PUT,DELETE和PATCH)的资源。要真正接受Roy Fielding描述的REST精神,您可以转向更完整的“超媒体”API。最明显的区别是答复更独立。它们具有定义明确的媒体类型(由您自己或现有规范定义),其中包含指向相关资源的链接,而不仅仅是数字ID。类似的回应包含描述可以执行的操作的模板/表格。 (还有更多,但在表面层面,这是你会注意到的)。

这使得人们和机器都可以更容易地发现API,并且它允许在演化API时有更大的自由度。可能存在性能缺陷,因为客户通常需要做更多的请求来实现同样的事情,但是这可以通过深思熟虑的设计和缓存来防止。 Garner专门用于提供简单的服务器端缓存。

您可以定义适合你的应用,常见于JSON或XML的顶部自己的媒体类型,或者你可以看一下现有的规范,特别是Collection+JSONHALJSON-API。目前看起来HAL具有最大的吸引力,在各种平台上都可以使用several libraries

JSON-API似乎并没有发生很多事情,但两个重要项目ActiveModel :: Serializer和Ember-data都采用了(并且同时开发)了这种格式,这意味着它可以成为Ruby/Rails世界的热门选择。

编辑:错字

相关问题