繁体   English   中英

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

[英]Developing websites with same API as mobile

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

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

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

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

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

如果您的服务和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

归因: 使用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。

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

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

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

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

除了您使用Web开发语言进行编码之外,webite与您在移动应用程序中执行的过程完全相同。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

在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/

祝好运!

通过使用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的方法相比的学习曲线。

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM