javascript - 使用与移动端相同的 API 开发网站

标签 javascript android ios json api

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

移动应用程序的 API 通常涉及通过 POST 或 GET 从 API 请求数据。数据将作为 JSON 返回。就此示例而言,假设 API 是一个由 Sinatra/Ruby 提供支持的简单 API,移动设备和网站都可以使用它。

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

我听说过 AngularJS 和 Backbone.js 这两个名字,但也许 Sinatra 就足够了?我不想使用 PHP。

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

最佳答案

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

我不是 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.js , Ext.js , Backbone.js , Knockout.js ,甚至 jQuery MobileBootstrap .目前,这是将 Web 服务 API 与 Web 应用程序集成的最常见方式。请注意,在某些情况下,您甚至可以只设计一个网站,然后将其用作移动应用程序的基础(例如,通过 iOS UIWebView/Android WebView)。
  • Middle Tier Proxy:如果您想在浏览器中取消 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 应用
  • Android 应用程序使用 Jersey REST Client

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

关于javascript - 使用与移动端相同的 API 开发网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15986626/

相关文章:

javascript - 将数据传递到 d3js

javascript - 我只是想将函数 func() 中的一些 javascript 值传递给标记 "p"。但它没有发生。任何人都可以帮助我吗?

java - 年龄计算方法不能返回正确的年龄?

用户从设置中撤消权限时的 Android Marshmallow 回调?

ios - 如何使用 PHCachingImageManager

javascript - Vuejs如何防止用户登录后进入登录页面?

javascript - PHP - 如何从隐藏的输入类型和 $_POST 中获取名称到另一个 php?

java - 异常: android. view.InflateException : Binary XML file line #20: Error inflating class net. simonvt.datepicker.DatePicker

ios - iOS中的高精度定时器

ios - 使用动画显示颜色序列(Swift)