我只熟悉本机移动开发,而不是网络开发,所以请原谅我的天真。
移动应用的API通常涉及通过POST请求或从API请求GET数据。数据将作为JSON返回。为了这个例子,假设API是一个由Sinatra / Ruby提供支持的简单API,它将由移动和网站使用。
使用相同范例进行网站开发的选项有哪些 - 网络前端从与移动应用程序相同的JSON端点获取数据?
我听说过AngularJS和Backbone.js的名字,但也许Sinatra就足够了?我宁愿不使用PHP。
我更喜欢轻量级的解决方案。如果可能的话,我希望能够在模型更改时更新页面,但我猜这将取决于后端API的更改。
答案 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应用程序与移动应用程序就成了选择合适的集成库的问题:
作为一个真实的例子,我当前的项目有大量的RESTFul Web服务,这些服务是使用在集群JBoss服务器上运行的Java EE / JAX-RS构建的。默认情况下,服务返回JSON,但也可以生成XML,并从以下位置访问:
多个不同平台/ 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数据。以下选项最适合您:
使用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数据库。