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

can*_*boy 9 javascript api android json ios

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

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

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

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

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

Per*_*ion 6

如果您的服务和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
Run Code Online (Sandbox Code Playgroud)

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

请注意,用于服务实现的实际语言/平台是无关紧要的,只要其RESTful,并返回客户端可以轻松使用的数据.完成设置后,设计Web应用程序与移动应用程序就成了选择合适的集成库的问题:

  • HTML(5)/ CSS/Javascript.一个更强大的选项,因为它可用于实现移动和Web应用程序.所提到的三种技术构成了新Web 2.0体系结构的核心,并且存在各种框架:Angular.js,Ext.js,Backbone.js,Knockout.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使用完全相同的服务,服务端无需更改.这是我相信你想要完成的.


Jor*_*mos 2

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

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

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