ruby-on-rails-3 - 单独的 REST JSON API 服务器和客户端?

标签 ruby-on-rails-3 rest backbone.js sinatra ember.js

我即将从头开始创建一堆网络应用程序。 (有关概述,请参阅 http://50pop.com/code。)我希望能够从许多不同的客户端访问它们:前端网站、智能手机应用程序、后端 Web 服务等。因此,我真的希望每个客户端都有一个 JSON REST API .

另外,我更喜欢在后端工作,所以我梦想着将我的注意力完全集中在 API 上,并雇用其他人来制作前端 UI,无论是网站、iPhone、Android 还是其他应用程序.

请帮助我决定应该采取哪种方法:

TOGETHER IN RAILS

Make a very standard Rails web-app. In the controller, do the respond_with switch, to serve either JSON or HTML. The JSON response is then my API.

Pro: Lots of precedent. Great standards & many examples of doing things this way.

Con: Don't necessarily want API to be same as web app. Don't like if/then respond_with switch approach. Mixing two very different things (UI + API).

REST SERVER + JAVASCRIPT-HEAVY CLIENT

Make a JSON-only REST API server. Use Backbone or Ember.js for client-side JavaScript to access API directly, displaying templates in browser.

Pro: I love the separation of API & client. Smart people say this is the way to go. Great in theory. Seems cutting-edge and exciting.

Con: Not much precedent. Not many examples of this done well. Public examples (twitter.com) feel sluggish & are even switching away from this approach.

REST SERVER + SERVER-SIDE HTML CLIENT

Make a JSON-only REST API server. Make a basic HTML website client, that accesses the REST API only. Less client-side JavaScript.

Pro: I love the separation of API & client. But serving plain HTML5 is quite foolproof & not client-intensive.

Con: Not much precedent. Not many examples of this done well. Frameworks don't support this as well. Not sure how to approach it.

特别是从经验中寻求建议,而不仅仅是理论上。

最佳答案

Boundless ,我们深入研究了选项#2,并将其推广给了数千名学生。我们的服务器是 JSON REST API(Scala + MongoDB),我们所有的客户端代码都直接从 CloudFront 提供(即:www.boundless.com 只是 CloudFront 的别名)。

优点:

  • 前沿/令人兴奋
  • 物超所值:API 为您自己的网络客户端、移动客户端、第三方访问等提供基础。
  • 网站加载/页面转换速度极快

缺点:

  • 不适合 SEO/无需做更多工作即可完成。
  • 需要顶尖的 Web 前端人员,他们准备好应对 70% JavaScript 的网站体验的现实情况以及这意味着什么。

我确实认为这是所有网络应用程序的 future 。

给 Web 前端人员的一些想法(这是该架构带来的所有新奇/挑战):

  • CoffeeScript 。更容易生成高质量的代码。
  • Backbone 。组织逻辑和活跃社区的好方法。
  • HAMLC。 Haml + CoffeeScript 模板 => JS。
  • SASS

我们为前端开发构建了一个名为“Spar”(单页应用程序火箭飞船)的工具,它实际上是来自 Rails 的 Assets 管道,专为单页应用程序开发而调整。我们将在接下来的几周内在 github 上开源页面,以及一篇博客文章,更详细地解释了如何使用它和整体架构。

更新:

关于人们对 Backbone 的担忧,我认为他们被高估了。 Backbone 与其说是一个深层框架,不如说是一种组织原则。 Twitter 的网站本身就是一个 Javascript 巨兽,覆盖了数百万用户和旧版浏览器的每一个极端情况,同时实时加载推文、垃圾收集、显示大量多媒体等。在我见过的所有“纯”js 网站中可见,Twitter 是个奇怪的人。有许多通过 JS 交付的极其复杂的应用程序都表现得非常好。

您对架构的选择完全取决于您的目标。如果您正在寻找支持多个客户端并获得优秀前端人才的最快方法,那么投资独立 API 是一个不错的选择。

关于ruby-on-rails-3 - 单独的 REST JSON API 服务器和客户端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10941249/

相关文章:

ruby-on-rails - Rails,当用户名中存在 @ 符号时,route_path 会中断

rest - 文档数据库 : Can't access documents in my collection

java - 如何使用参数而不是值获取 javax.ws.rs.core.UriInfo 的 URI 路径

相关资源处于阻止状态时的 Rest API 响应错误代码

javascript - 我的 View 没有从我的 Controller 接收数据

javascript - Backbone : Calling Model fetch on a click of a button

ruby-on-rails - rails 3 : Working Mongoid captcha exists?

ruby-on-rails-3 - 获取错误 "Can' t 将 FixNum 转换为数组”

sorting - Backbone.js 中的分页集合

mysql - Rails/MySQL 兼容性