为现有的网站开发App版,该咋办
提炼主要功能;做几个界面,包括登录、列表、详情等等;web端改造一下,支持json或者xml输出;客户端把读到的xml/json填进去。然后再美化一下。
■网友
首先先绕题一下,互联网时代大部分应用软件/产品都是基于“Client/Server”(C/S)或是“Browser/Server”(B/S)的架构,最早的PC时代网络应用主要是C/S的架构,而在Web流行之后,B/S架构是一度成为风靡。事实上B/S的架构是C/S架构的一个特例,因为Browser可以视为一种特殊的Client。而如今的移动时代,似乎又回归C/S的架构。即使这两种架构有不小的差异,但是本质上是相同/想通的。回到网站上来说,假设这个网站叫OnlineSchool吧(最近网络学习特别火),它是个B/S架构,它的通信方式为Browser发一个HTTP请求给Server,Server收到HTTP请求(通过URL地址)后进行处理,然后将结果以HTTP响应(HTML文档)的方式返回给Browser,后者再对HTML文档进行渲染,这个过程被视为一次独立的HTTP通信。App (Client的一种特例) 与 网站的 Server 的工作原理也是类似的 -- App 发送一个 HTTP 请求给 AgapeWS Server,Server 收到 HTTP 请求(GET, POST, PATCH, DELETE等HTTP动词)后进行处理,然后将结果以HTTP响应(响应的报文包含一个半结构化数据模型,通常为 JSON / XML 格式的文档)的方式返回给App,Client 处理这个 JSON 文档然后显示数据。所以需要做的工作如下:1. 开发一组 APIs(通常不需要网站的数据库),App 借着这组 API 与 网站的 Server 进行HTTP通信。2. 开发 App。我举个具体的实例(Ruby China社区网站)来说明以上的原理。Ruby China社区网站是一个讨论Ruby相关技术的论坛(Forum),整个网站主要是由许许多多的帖子,或是称为话题(Topic)组成。浏览器展示某个话题,需要将URL转换为HTTP请求,比如Browser通过 Ruby China | Ruby 中那些你绕不过的「坑」(译) 这个 URL 给 Ruby China的Server 发送 HTTP 请求,然后会收到一个 HTML 网页。此外这个网站还提供一个 http://ruby-china.org/api/topics/17742.json(若浏览器显示乱码,请设置为UTF-8格式),iOS/Android App 可以通过这个具体的 API 得到一个 JSON 格式的响应。我摘取该JSON响应的一部分:{ "id": 17742, "title": "Ruby 中那些你绕不过的「坑」(译)", "created_at": "2014-03-08T15:51:27.447+08:00", "updated_at": "2014-03-14T19:54:35.745+08:00", "replied_at": "2014-03-14T19:54:35+08:00", "replies_count": 56, "node_name": "Ruby", "node_id": 1, "last_reply_user_id": 11729, "last_reply_user_login": "chaishao", "body": " 大多数 Ruby on Rails 的初学者们都会为这个出色的框架着迷,…" "hits": 3264, "user": { "id": 835, "login": "zhaowenchina", },}移动 App 通过此 JSON 数据来显示界面。Ruby China网站提供了一组 API:Ruby China 来支持与 Clients 的通信,事实上Ruby China的 Server 并不需要知道 Client 具体的细节,因为 Android 或是 iOS Client 都是通过相同的 Ruby China API 接口来通信。现在具体谈谈这组 API 如何设计,假设这个网站域名为http://onlineschool.com来着,猜测需要的大致如下:1. User 接口,这个接口支持的操作如注册、登录、登出等操作。这个接口的API可以设计为 http://onlineschool.com/api/user当 Client 需要获取某个用户的信息(ID 为 10010),那么可以对http://onlineschool.com/api/user/10010.json 地址使用 HTTP GET 请求,OnlineSchool Server发送回来的响应可能如下:{ "id": "10010", "username": "张三" "last_login_time": "2012-01-01" "credits": 14 "num_finished_classes": 8 ...}当 App 需要更新这个用户的信息,比如修改用户名,Client 可以对接口http://onlineschool.com/api/user/10010 发送HTTP PATCH请求,请求中会有参数 username = "李四" 这样的 Key / Value 对,来告诉Online Server修改该用户的信息,Server接收到这个请求后一般会修改数据库中用户的表(Table),当然 App 并不需要知道Server到底是怎么做的,也并不需要关心,只要知道这个 API 协定的规则就够了。类似,如果删除一个用户,App 可以对接口http://onelineschool.com/api/user/10010 发送HTTP DELETE请求……2. Class 接口,这个接口提供与课程相关的操作,读取一个课程的信息,读取一组课程的信息,等..,http://onlineschool.com/api/class获取所有课程,一般通过发送HTTP GET到这个接口 http://onlineschool.com/api/class;如果获取某一个ID为234的课程,可以发送 HTTP GET 到这个接口 http://onlineschool.com/api/class/234,等等…3. Topic 接口对应于话题...…
推荐阅读
- 广东警方曝光38款存在超范围收集用户信息违规行为App
- 赣榆■违法App的幕后帮凶赣榆落网 APP排名暗藏玄机
- 孕产妇|孕期皮肤瘙痒——20%准妈妈都有的困扰
- 如果把DNS从godaddy转到DNSPOD是不是所有的二级域名都要重新设置,然后等这个各个ISP的缓存重新解析啊
- 医生|为什么有的人得癌后能活下去,有人却早早离世?医生跟你说实话
- QQ那个戴头盔吸烟的表情有啥来历
- 汪峰|汪峰女儿颜值被放大?15岁成熟似25岁,完全失去少女该有的纯真?
- 我有几个app点子,拉出来比较容易实现的一个和大家探讨,只差程序员(替你们说了)请问这个点子咋样
- 为啥Apple Store充值不能随意输入金额而是分为几个档次充值
- 请问类似实惠APP这类的“体验式营销”概念在国内有没有市场盈利及发展前景怎样呢