10

我只熟悉原生移动开发,不熟悉 Web 开发,所以请原谅我的幼稚。

移动应用程序的 API 通常涉及通过 API 的 POST 或 GET 数据请求。数据将作为 JSON 返回。为了这个例子,假设 API 是一个由 Sinatra / Ruby 提供支持的简单 API,它会被移动设备和网站使用。

使用相同范例的网站开发有哪些选择 - Web 前端从与移动应用程序相同的 JSON 端点获取数据?

我听说过 AngularJS 和 Backbone.js 的名字,但也许 Sinatra 就足够了?我宁愿不使用 PHP。

我更喜欢轻量级的解决方案。如果可能的话,我希望它能够在模型更改时更新页面,尽管我猜这将取决于后端 API 的更改。

4

8 回答 8

7

如果您的服务和 UI 层完全分开,您将获得最大的收益。我的意思是,在设计服务时不要考虑特定的 UI,因为这样做可以最大限度地重用它们。我会推荐一个基于 Web 的 RESTful 服务实现,因为它们为 UI 集成提供了很大的灵活性。现在确实有大量图书馆能够使用来自此类服务的数据。

我不是 Ruby 开发人员,但这是 Sinatra 中的一个简单的 Web 服务实现:

require 'rubygems'
require 'sinatra'
require 'lib/posts'

post '/posts'
    post = Post.create! params
    redirect "/posts/#{post.id}"
do

get 'posts/:id' do
    @post = Post.find(params[:id])
    erb :post
end

归因:使用 Sinatra 和 RESTClient 的轻量级 Web 服务

请注意,用于服务实现的实际语言/平台是无关紧要的,只要它是 RESTful 的,并且返回客户端可以轻松使用的数据。一旦你有了这个设置,那么设计一个 web 应用程序和一个移动应用程序就变成了选择一个合适的集成库的问题:

  • HTML(5)/CSS/Javascript。更强大的选项之一,因为它可用于实现移动和 Web 应用程序。上述三项技术构成了新 Web 2.0 架构的核心,并且存在各种框架:Angular.jsExt.jsBackbone.jsKnockout.js,甚至jQuery MobileBootstrap。这是目前最常用的将 Web 服务 API 与 Web 应用程序集成的方式。请注意,在某些情况下,您甚至可以只设计一个网站,然后将其用作您的移动应用程序的基础(例如,通过 iOS UIWebView/Android WebView)。
  • 中间层代理:如果您想在浏览器中取消 Ajax(出于安全目的,或避免 XSS 问题),您将采用这条路线。代理可以用任何语言(Java、PHP、Ruby、Perl)编写,并负责使用您的 Web 服务并为您的 UI 生成动态 HTML。

作为一个真实的例子,我当前的项目有大量使用 Java EE/JAX-RS 构建的 RESTFul Web 服务,这些服务在集群 JBoss 服务器上运行。这些服务默认返回 JSON,但也可以生成 XML,并且可以从以下位置访问:

  • 使用 Ext.js 构建的各种内部和外部 Web 应用程序
  • 使用 AFNetworking/RestKit/NSURLConnection 组合的 iOS 应用程序
  • 使用Jersey REST 客户端的 Android 应用程序

完全相同的服务被多个不同的平台/用户界面使用,服务端不需要更改。这就是我相信你正在努力实现的目标。

于 2013-04-21T09:10:32.790 回答
3

一种选择,因为您熟悉本机开发,我假设您对 java 很好,那么我建议您使用DropWizard进行 API 开发,它将通过 RESTful 端点提供 JSON。

该网站与您在移动应用程序中执行的过程完全相同,只是您使用 Web 开发语言进行编码。

向 API 发送请求。获取 JSON 响应。将 JSON 解析为对象。使用 HTML、CSS 等创建对象的 UI 表示。显示 UI 表示。

您需要做的就是决定使用哪种语言来进行 POST/GET - PHP、Ajax 或您选择的其他语言。

于 2013-04-13T10:39:17.557 回答
2

根据我的经验,当我开发一个多平台应用程序时,我会尽量使我的代码和算法可重用。因此,当我准备一个 API(例如 PHP 和 MySQL)时,我对所有平台使用相同的数据检索格式。移动项目和 Web 项目都可以通过 JSON 或 XML 读取和发送数据,所以我认为这无关紧要。

尽管如果您将所有数据库连接集中在 API 上,您将在很大程度上减少连接(和错误)的数量。

您可以在 Foursquare 上看到一个正在运行的示例。

于 2013-04-13T10:28:32.470 回答
2

AngularJS 确实适用于单页类型的应用程序,以 Web 服务为食。与 jQuery ajax 调用 (imo) 相比,它的学习曲线要​​陡峭一些,因此根据您的需要,使用 jQuery 创建应用程序可能更有意义。

其他 JS MVC 框架(knockout、ember.js)在从 JSON 源获取数据方面可能具有类似的功能,但我对它们不是很熟悉,所以你可以看看并决定。

否则,您只需创建一个起始 html 页面,并在加载后启动对服务的 ajax 调用。

于 2013-04-16T13:01:00.647 回答
2

在我的“前世”中,我曾经是一名 Web 开发人员(10 年),现在我是一名全职的移动开发人员(从 2.5 年前开始)并且我使用 SOAP 或 REST API 创建了 Android 和 iOS 应用程序.

在 Web 上,我喜欢使用 JQuery 和 JQuery-UI。JQuery 有非常简洁的方法从 SOAP 或 REST Web 服务获取 JSON 数据,以填充网格、表单、在等待响应时显示进度的控件等。查看:http://api.jquery.com/jQuery。获取JSON/

我目前正在开发一个带有 REST 操作和 JSON 数据的 iOS 应用程序,Web 开发团队正在构建一个后端网站,使用主干.js 和 JSON-REST 操作将前端与我通过 iOS 交谈的同一后端连接起来JSON-REST。我知道他们经常使用backbone.js 的解析(读取JSON)、collection.toJSON()(转换为JSON)和模型同步方法(更多信息请参见http://backbonejs.org/)。

所以...我同意其他人的观点,只要您可以从 REST 获取 JSON,您就可以在您的 Web 和移动应用程序上使用相同的方法。

这是一篇关于以正确方式构建 RESTful API 服务器的精彩博客文章:http: //blog.mugunthkumar.com/articles/restful-api-server-doing-it-the-right-way-part-1/

祝你好运!

于 2013-04-16T18:31:42.910 回答
2

据我了解,您正在寻找一个易于学习和构建动态网站的轻量级 Web 开发框架。

根据您的要求,Web 前端应该能够发出 HTTP GET/POST 请求以从 API 获取 JSON 数据。以下选项最适合您:

  1. HTML + AJAX(用于非常简单的动态网站)
  2. PHP + AJAX(用于更复杂的网站)

GET/POST 请求是使用 JS 库(例如 jQuery)作为 AJAX 调用进行的。此外,jQuery 提供了解析 JSON 响应的函数。

所以本质上你需要学习 PHP 和 jQuery,它们都非常流行且易于使用,并且背后有巨大的社区支持。

于 2013-04-15T19:49:40.720 回答
0

通过使用 Web 服务(JSON 内容)来开发 Web 应用程序有两种主要方法

  • 纯基于 HTML 的方法:在此模型中,您不需要任何服务器端脚本,例如 PHP、JSP 和 ASP.Net 等。基于 JSON 的 REST 服务将由 JavaScript 使用并将数据呈现为 HTML 组件。编程模型现在更流行,应用程序将变得流畅并且表现得像桌面应用程序一样。有很多框架可以帮助您实现这一目标。它们在之前的答案中已经提到过,例如 Angular.js、Ext.js、Backbone.js、Knockout.js、DoJo、Bootstrap。甚至该框架中的一些支持与 UI 组件和基于服务器端 JSON 的休息服务的数据绑定。不需要任何编码来使用 REST 服务和呈现 UI 组件。它将通过此​​客户端框架自动完成。示例 DoJo

  • HTML 和服务器端脚本:在这种方法中,您需要使用任何服务器端脚本语言,如 PHP、JSP、JSF 和 RoR、Django 等框架来实现这一目标。由于它涉及其他脚本语言和框架,因此与基于 HTML 和 JS 的方法相比,它具有学习曲线。

总之,我建议从第一种方法开始。

于 2013-04-22T08:37:58.717 回答
0

由于您已经在 Ruby 之上构建了 api,因此请考虑使用 Ruby on Rails。我是一名 C#/iOS 开发人员,直到最近才研究过 Ruby on Rails。这是一门很棒的语言,非常容易和灵活。有关更多信息,请查看此链接http://railsinstaller.org/

它还为您提供了更大的灵活性来实现 jQuery 和其他基于 javascript 的库。

您可以使用 Sqlite、MySql 和 PostgreSQl 数据库。

于 2013-04-22T10:56:34.200 回答