使用与移动设备相同的API开发网站

时间:2013-04-13 10:06:16

标签: javascript android ios json api

我只熟悉本机移动开发,而不是网络开发,所以请原谅我的天真。

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

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

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

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

8 个答案:

答案 0 :(得分:5)

如果您的服务和UI层完全分开,那么您将获得最大的收益。我的意思是,在没有特定UI的情况下设计您的服务,因为这样做可以为您提供最大程度的重用。我建议使用RESTful,基于Web的服务实现,因为它们为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

署名:Lightweight Webservices with Sinatra and RESTClient

请注意,用于服务实现的实际语言/平台无关紧要,只要其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。

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

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

多个不同平台/ UI使用完全相同的服务,服务端无需更改。这就是我相信你想要完成的事情。

答案 1 :(得分:3)

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

除了您使用网络开发语言进行编码外,网站与移动应用程序完全相同。

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

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

答案 2 :(得分:2)

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

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

你可以在Foursquare上看到一个正在运行的例子。

答案 3 :(得分:2)

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

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

  1. HTML + AJAX(适用于非常简单的动态网站)
  2. PHP + AJAX(适用于更复杂的网站)
  3. 使用JS库将GET / POST请求作为AJAX调用,例如jQuery的。另外,jQuery提供了解析JSON响应的函数。

    基本上你需要学习PHP& jQuery都非常受欢迎且易于使用,并且在它们背后有很大的社区支持。

答案 4 :(得分:2)

AngularJS对单页类型的应用程序非常有效,可以提供Web服务。它比jQuery ajax调用(imo)有更陡峭的学习曲线,因此根据您的需要,使用jQuery创建应用程序可能更有意义。

其他JS MVC框架(knockout,ember.js)可能具有与从JSON源获取数据类似的功能,但我并不熟悉它们,因此您可以查看并做出决定。

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

答案 5 :(得分:2)

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

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

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

所以......我同意其他人的意见,只要你能从REST获得JSON,就可以在你的网络和移动应用程序上使用相同的方法。

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

祝你好运!

答案 6 :(得分:0)

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

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

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

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

答案 7 :(得分:0)

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

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

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