我在 Rails 中开发了几个应用程序,我需要开发一个 API。我收到了在 Sinatra 中构建它的建议,所以我开始研究它。
看起来很不错,但是在 Rails 中自动化的很多东西似乎在 Sinatra 中并不存在。具体来说,我似乎必须从头开始编写我的资源。例如。模型本身、迁移和 REST 路由。
我想知道是否有像 Rails 提供的那样的 Sinatra 生成器?或者如果我希望这些事情自动化,我应该简单地使用 Rails 吗?
我在 Rails 中开发了几个应用程序,我需要开发一个 API。我收到了在 Sinatra 中构建它的建议,所以我开始研究它。
看起来很不错,但是在 Rails 中自动化的很多东西似乎在 Sinatra 中并不存在。具体来说,我似乎必须从头开始编写我的资源。例如。模型本身、迁移和 REST 路由。
我想知道是否有像 Rails 提供的那样的 Sinatra 生成器?或者如果我希望这些事情自动化,我应该简单地使用 Rails 吗?
我个人不使用 Sinatra,但我从其他 Rails 开发人员那里得到的很多反馈是,他们最终会切换回 Rails。我确信在 Rails 上使用 Sinatra 有很好的理由,但如果您已经了解 Rails,并且没有速度或应用程序大小限制,我会坚持下去。
Sinatra 的另一个替代方案是Rails API项目,它不包含 Rails 框架的任何与视图相关的部分。我过去使用过它并且喜欢它,但它比仅使用 Rails 更好吗?很难说。
如果你必须有 Sinatra,你应该去看看Padrino 。
Padrino 是一个基于 Sinatra 网络库的 ruby 框架。Sinatra 是一种 DSL,用于在 Ruby 中创建简单的 Web 应用程序。Padrino 的创建是为了让编写更高级的 Web 应用程序变得有趣和容易,同时仍然坚持使 Sinatra 变得伟大的精神!
或者正如 Beerlington 所提到的,如果您对 Rails 感觉更熟悉,您可以使用Rails API 。我们最近一直在使用它并取得了很好的成功。我们创建了一个带有 mongo 后端的简单 API。启动非常快:)
查看可用于处理 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
Or should I simply use Rails if I want these kind of things automated?
If you're that used to Rails that using Ruby is a problem, then maybe. Alternatively, you could try this API generator that uses Sinatra: