我在Rails中开发了很少的应用程序,我需要开发一个API。我收到了在Sinatra建造它的建议,所以我开始研究它。
看起来相当不错,但似乎在Rails中自动化的很多东西似乎并不存在于Sinatra中。具体来说,我似乎必须从头开始编写我的资源。例如。模型本身,迁移和REST路由。
我想知道是否有任何类似于Rails提供的Sinatra生成器?或者,如果我希望这些东西自动化,我应该简单地使用Rails吗?
答案 0 :(得分:1)
我个人并不使用Sinatra,但我从其他Rails开发人员那里得到的很多反馈是他们最终会切换回Rails。我确信使用Sinatra而不是Rails有很好的论据,但是如果你已经知道Rails,并且你没有速度或应用程序大小的限制,我会坚持这一点。
Sinatra的另一个替代方案是Rails API项目,它不包含任何与Rails框架相关的视图。我过去曾经使用它并喜欢它,但它比仅仅使用Rails更好吗?很难说。
答案 1 :(得分:1)
如果你必须有Sinatra,你应该看看Padrino。
Padrino是一个基于Sinatra Web库的ruby框架。 Sinatra是一个用于在Ruby中创建简单Web应用程序的DSL。 Padrino 创建它是为了让它更有趣,更容易编写更高级的Web代码 应用虽然仍然坚持使Sinatra的精神 太棒了!
或者正如Beerlington所提到的,如果你对Rails有更多的感觉,你可以使用Rails API。我们最近一直在使用它取得了很大的成功。我们创建了一个带有mongo后端的Simple API。启动非常快:)
答案 2 :(得分:1)
查看可用于处理RESTful路由的sinatra-rest
gem。为方便起见,下面引用:
[sinatra-rest]是一组模板,用于将RESTful路线引入Sinatra。您唯一要做的就是提供视图。自动适用于基于ActiveRecord,DataMapper或Stone的模型。
例如,如果您的模型类名为Person,则只需添加以下行:
rest Person
这会将以下RESTful路由添加到您的应用程序中。 (注意Person
到/people/*
路由的复数形式。)
Verb Route Controller View
GET /people index /people/index.haml
GET /people/new new /people/new.haml
POST /people create → redirect to show
GET /people/1 show /people/show.haml
GET /people/1/edit edit /people/edit.haml
PUT /people/1 update → redirect to show
DELETE /people/1 destroy → redirect to index
答案 3 :(得分:0)
或者,如果我希望这些东西自动化,我应该只使用Rails吗?
如果你已经习惯了使用Ruby的Rails是一个问题,那么也许吧。或者,您可以尝试使用Sinatra的API生成器: