说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

程序员心髓:移动应用API设计10大技巧

HTML文档下载 WORD文档下载 PDF文档下载
移动App与基于Web/云服务发生对话很常见,小到检索数据,大到用户授权和管理等行为。如果想要保证App正常高效运行,并降低开发成本、使应用代码简单化,建立API是必不可少的步骤,本文介绍了10大移动API设计技巧。

移动App与基于Web/云服务发生对话是很常见的事情,最简单的可能仅仅只是检索数据,但也可能包含发送数据、用户授权和管理。而这也就验证了为移动应用建立API的重要性,为此,我们特总结了10大移动API设计技巧。


1. API版本控制

无论何时,开发者要想保证应用正常运转,对API进行修改总是不可避免的,可能只是对某些功能执行添加、删除或其他操作。当遇到这种情况时,你就不得不暂停API部分的使用,或者允许正在使用的应用对需要被返回的行为及响应类型有着明确的认知。


API就如同你的应用后端与使用它的应用之间存在一个约定。没有适当的版本控制,一方可以在另一方完全不知晓的情况下更改约定,那么,你将处于非常危险的境地。对多个API版本提供支持,可以让那些没有及时升级应用的用户继续使用,而通过App的最新版,可以让你了解到最新API的所有变化。

在一款移动App中,API版本控制的重要性显而易见。如果没有API的版本控制,那么在对API进行修改时很容易会造成App停止运行,由此而造成的后果,会让你哭天抢地追悔莫及。

2. 返回数据,不要超出需要

在一定程度上,应用与服务器之间发送的数据量将会影响发出请求及其响应的时间。它所造成的影响不仅仅只是用户紧盯加载页面所花费的时间,还可能包括加载页面所花费的流量。

3. 对发送及接收数据进行压缩

除了上述不要返回数据超出需要之外,通过对发送及接收的数据进行压缩,可以让你在速度和数据传送上事半功倍,体验到更多的好处。

4. 坚决删减多余的步骤/请求

为了提供单独的离散步骤而进行API设计的情况很常见,但这是反映该服务是如何被使用的。因此在大多数情况下,这些离散步骤反而不是执行移动App最行之有效的方法。

让我们来举一个非常简单的例子。当用户在可以发送请求数据之前已经提供了有效的认证信息并登录。这可能很是合情合理,我们可以将其理解为两个单独的步骤:

  • 提供的认证信息有效,API响应一个会话令牌。
  • 当数据请求发出时,该会话令牌通过。

但事实上执行此操作并不需要如此反复的过程。当一个单一的请求发出时,通过认证信息及其相关数据细节,数据及会话令牌在请求过程中同时被返回。

这样做的好处是当用户使用App时,响应速度更快,使用流量也更少。对于开发者而言,这可以让应用代码更为简单,如此一来,既降低了开发成本,也可以减少维护费用,皆大欢喜,何乐而不为呢。

5. 合并请求及响应

除了作为身份验证或应用启动过程中所发出的多重请求,在应用程序的单页或视图中,为了对所有数据进行检索,都有可能发出多重请求。为页面需要的所有数据建立一个单一请求,其速度要比多重请求快得多,并且成本也更低。而速度及成本也正是用户在使用应用程序时首先考虑的两大要素。


再者,合并请求及响应也可以让应用代码更为简单,尤其是关于处理多重请求发出却没有成功的情况。如果将所有请求进行合并,或化整为零,再多的异常情况也都变得非常简单,容易处理。

6. 重中之重:安全性

安全性是一个潜藏着危机可能随时会迸发的复杂问题,这也使得App对于安全问题及时做出响应难上加难。

因此,要时刻考虑以下内容:

  • 确保数据在传输过程中绝对安全;
  • 数据等待传输时安全;
  • 使用API不当或未经授权;
  • 潜在的恶意或意外数据所带来的后果。

7. 认真计划并执行你的缓存策略

如果你的应用API返回值不会经常性改变,那一定要实施适当的缓存策略。这可能会涉及到在内存中保存数据,而不是反复地从硬盘中读取数据,此外,还会对HTTP部分的缓存性能产生影响。

  • 服务器端

如果你在服务器上进行缓存,那么,就要确保当遭遇宕机之时,你能有办法强行停用服务。

  • 客户端

除了服务器端,使用API的应用客户端也要确保实施适当的缓存策略。如果你在使用最新返回的数据时请求调用,那么你可以节省一定的时间及资源。如果你在初始化时避免执行调用操作,则会节省更多的时间和资源。

8. 整合分析

分析是理解一个App如何使用的非常重要的组成部分。在App正常使用期间,对于调用而言,除了发出数据请求之外,做出一个分析服务是很常见的。例如,如果应用尝试调用服务来刷新页面显示数据,然后用户导航到该页面,那么就会在添加一个单独的追踪/分析到该导航时产生冗余。


在最原始时期,使用API可以对App的使用方法及时间起到一个指示性的作用。与之对比的是丰富的分析工具及框架,它们可以提供用户与App交互的非常详尽的信息。如果目前的你是介于两者之间,那么,就请认真思考如何进行整合分析,或者仅仅只是为了追踪应用使用情况,而发出一个额外或者多余的调用。

9. 究竟如何命名?请认真思考!

命名反映了你赋予API的方法、对象、属性及参数,这也会极大地影响到使用API的人的理解方式。当创建API时,无论用户首先想到的是何种术语或用语,就其本身而言,它就非常具有吸引力。就如同所有代码一样,你使用它的很大一部分原因在于API如何被理解及其被期望的表现。如果名称起不好,就会让人非常困惑。困惑导致错误,错误导致bug,bug导致延迟及支持成本上升。因此,多花点时间在命名上吧!

10. 不要忘了你的隐私权保护政策及责任

如果你的应用需要捕获到用户数据或登陆到服务器并记录请求,那么你就必须制定一个隐私权保护政策,来向用户详细介绍你是如何使用这些数据信息的。此外,你还必须思考如何存储及保护这些数据,尤其是如果它是属于个人信息,或者与儿童相关,更需要慎重。

(编译/唐小引 责编/张宁)

文章来源:DZone

利用Delphi开发响应用户输入的数据库查询Web Server程序 利用Tbatch组件完成数据批处理-Delphi资料 如 何 恢 复Sybase SQL Anywhere 的 数 据 库-Delphi资料 如何捕捉KEY VIOLATION等错误-Delphi资料 如何得到SQL返回的计算结果-Delphi资料 如何动态的读取Delphi中的PopupMenu的Caption ? 如何动态设置DBGRID。比如,动态设置DBGRID的COLUMNS。及如何在数值数据格式成千分位 如何返回BDE的状态信息?-Delphi资料 如何控制关键字段的重复输入及报错-Delphi资料 如何设置Microsoft SQL Server 全文索引服务 ?-Delphi资料 如何设置多用户环境的PARADOX数据库-Delphi资料 如何实现在一个Dbgrid中显示多数据库-Delphi资料 如何用SQL查询日期型字段?-Delphi资料 如何在数据库中存放avi文件-Delphi资料 如何在注册表中注册BDE-Delphi资料 筛选数据-Delphi资料 实现不同数据库系统之间的数据转移-Delphi资料 使 用WISQL32 同 时 访 问SQL SERVER 和SYBASE 数 据 库Delphi资 使用Session构件可以在打开有密码的库时不用输入密码-Delphi资料 使用SQL实现字段数据的模糊查询-Delphi资料 数据表的索引被损坏了怎么办-Delphi资料 数据库的密码、日期显示-Delphi资料 数据库应用程序开发中图像数据的存取技术-Delphi资料 数据库中图像数据的存取技术-Delphi资料 数据库转换-Delphi资料 数据浏览部件的应用及编程-Delphi资料 数据文件路径的管理-Delphi资料 随意控制DBGrid每一行的颜色-Delphi资料 通过DELPHI实现JAVA调用ORACLE数据库数据 通过编写代码来设置数据库的别名-Delphi资料 为Delphi数据表格增加彩色 分不是问题,望高手详解 允许DBGrid对记录进行编辑,在线等待,急急急~ ISO 1054 标准 请问如何使用PFC中数据窗口的resize服务? 页面设置问题!请教!! 哪里有 趣味程序导学 java2這本書的源代碼下載﹖ 关于win2000AD的一个问题?(急) 为什么找不到a.out文件 oracle 的SGA问题,性能优化 写功能模块报告含流程图的问题 请教关于DOM NodeFilter的相关用法! 关于BREW 买书落,便宜啊......(UP有分) 请问,通过java怎么访问其他机器的web services?提供思路就给分! 现在我面临着给50多台机装win2000的任务,怎么办 oracle 的SGA问题,性能优化 刚刚完成的改版公司主页。大家去支持一下小弟呀! ? 有谁知道上海的做J2EE薪水有多少(平均水平),谢谢大家! 几个算法问题,参与者都有分! .NET制作的安装程序安装好后如果删除了打包的一个文件,再次通过快截方式启动时会重新安装,怎么不让他安装? 哪位能给提供一套ISO文档的实例? 如果procedure中执行的是一条SQL语句,如何得到返回的数据集? 可不可以在单线乘里开2个SOCKET? 帮我看看这个c语言的程序! 怎样处理窗口标题? 高分求助 !!!怎样利用INTERNET实现异地多台机器互连? 很简单,如何得到当前的时间和日期?(在线等待) 请问哪里有用applet做的,能绘制数学曲线的动态演示系统?各位,请不吝赐教 今天大清早被人诅咒! Delete 多个表时一条语句怎样写?? 请教:如何获取文本框中SQL语句。50分 日期型的格式应该怎样写?? windows xp internet 浏览器的问题 大家帮我看看这段代码:它是如何得到name和phone的值,并写到文件中取得 100分求李维的delphi5.x分布式系统开发的源代码,电子书我已经有 奇怪。为何win2000的搜索选项中的日期控件是Delphi中的样式?欢迎来讨论,给分!!! 请教一个数据库查询的问题! 哥、姐帮帮小第,一生成并打印表格问题(有图片及字体适应),急急,十万火急。 怎样在ASP.NET的页面中,把DataGrid的表头改名??急急急!!! 在线求教:怎样在自己定义的函数里封装自己的MouseMove类??? (高手求救………100分)怎么样用socket(http)实现上载!请提供思路或source code! 怎样调用Dll中导出的变量??? 那位大哥有关于颜色渐变的算法的代码,给小弟一份 小弟万分感谢 颜色渐变的算法 颜色渐变的算法 问一个有关缓存的问题 更换基类的问题? 感谢上学期大家的帮助——散分 一个奇怪的问题,100在线送给你!!! 用rave生成的pdf格式报表,中文字符怎么是乱码? 请进来: windows 2000 能不能用API的方式将Imagelist中的图画在命令按钮(Commandbutton)上? 中华民族为什么又被称为华夏民族? 甲苯 和硝酸 反应的化合价变化 21-三体风险度,18-三体风险度是什么意思1期唐氏综合征筛查(早期)的21-三体风险度为1:12000是低风险,18-三体风险度为1:100000低风险请问是什么意思,看到结果后心里有忐忑不安 静电是什么?他的有现象?还有就是我们普通用的电是什么? 五年级英语作文:My Bag 汽轮发电机的有功调节并网的汽轮发电机的有功功率是靠调节蒸气的进汽量来调,那蒸汽量增加,发电机的转速不会升高吗,整个过程是怎么调节的.能举例子吗? 什么是保险学? 某单位存入银行A、B两种不同性质用途的存款共80万元,A种存款的年利率为5.5%,B中存款的年利率为4.5%.某单位存入银行A、B两种不同性质用途的存款共80万元,A种存款的年利率为5.5%,B中存款的年 从龙图腾的产生过程中得到了什么启示 在保险学中“逆向选择”是什么意思?拜托了各位 谢谢 某单位存入银行A,B两种不同用途的存款共40万元,帮帮!)某单位存入银行A,B两种不同用途的存款共40万元,A种存款的年利率为5.5%,B种存款的年利率为4.5%,上缴国家利息税20%,该单位一年可获利息 以下化学反应的产物与反应物的浓度或用量无关的是A.AlCl3溶液中通入NH3 B.Cu与 硝酸溶液反应C.CO2通入NaOH溶液中 D.Na与O2反应ABC都知道,但是不明白D……D选项中不应该是产物与反应条件有 皇太极是使用怎样的反间计使崇祯杀了袁崇焕最好有拘捕时的具体事例 中华人民共和国名字的由来这个名字是怎么来的?当初难道没有叫别的名字么?中华人民民主共和国 中华民主共和国中华人民民主社会主义共和国 中华社会主义共和国中华人民社会主义共和国 某单位存入银行A,B两种不同性质用途的存款共80万元,A种存款年利率为5.5%B种为4.5%上缴国家利息税率为20...某单位存入银行A,B两种不同性质用途的存款共80万元,A种存款年利率为5.5%B种为4.5%上缴 抗日战争初期,国民党正面战场发生的最大规模的战役是什么 什么是中国的言论自由 甲苯与HNO3反应方程式,1 写出来最好 2 请配平 3 请问为什么那生成物不是叫1,3,5-三硝基甲苯 用叠词补充完整()()大国 体现中国古代的言论自由的例子有哪些 物体处于静止状态时,一定受到平衡力作用? 给下列的词语补充叠词枪声( )( ) 风声( )( ) 炮声( ) ( )钟声( )( ) 雨声( ) ( ) 鸟声( ) ( ) 在我国为什么要保护公民的言论自由? 换西铁城光动能手表的电池要多少钱,要多久才得? 电磁波的特征有哪些?有关电磁波的知识就行! 英语作文:My Bag 光动能什么概念,这样手表需要更换电池或需要电池吗? (求助)“债法”用英语怎么说啊?顺便翻译一下 当代西方文化社会思潮怎么用英语说 my bag最多六句 西铁城光动能手表,是永远都不用更换电池吗?我比较喜欢西铁城的光动能男表,但我不喜欢更换电池.如果要是西铁城光动能表需要更换电池,我就更老牌子的偏爱机械表.拿出全部赏分啦,呵呵. RO膜安装反了会怎么样 My bag is_____________后面是?答案的开头字母是R 主题:是过年不收压岁钱而收祝福语的手抄报写什么内容 壁虎吃什么东西? 怎么对I lost my bag中的my bag进行题问 避雷针是什么原理制成的 大家看看这是什么东西,尾部很长额!大约20厘米,我很好奇啊! 甲苯和硝酸反应会沉淀么? 避雷针的原理 arduino做循迹智能小车的问题用的红外传感器,检测地面的白纸黑线循迹,传感器不听话··很难调好怎么办?定义在void setup的中断是同级中断吗如果要中断嵌套,是把attachInterrupt写在中断函数里面 甲苯与HNO3反应方程式,写出来最好.1 2 请问为什么那生成物不是叫1,5-三硝基甲苯 这不是只有一个硝基吗?怎么名字有三个硝基? 龙图腾是什么意思 如何智能小车如何在盲走时走直线 法律:对言论自由限制的标准方式有哪些? 现在哪一些RO膜好一些 有没有关于2012年之后的末世预言?那2012要是没事,会不会又挖出来某个新的历史预言资料那?呵呵,要是2012没事,那以后又没有什么 2020、2050、3012什么预言的了,那岂不是很没意思啦?还有,那样是 某企业存入银行甲乙两种不同性质的存款,共40万.甲存款的年利率5.4%乙种存款年利率4.6%,上缴给国家的利息税为20%该企业一年可获利息收入15360元.求甲乙两存款各是多少? 雷暴是什么?长点,详细点.要快!急!急!急! 请高手提供小车走定点走方格C语言能实现象视频里面小车的效果. 你怎么看待言论自由 言论自由有什么限制吗 什么的雷暴 如何利用超声波让智能小车(左右两边各装一个超声波)沿直线行走?就是始终使它与墙面保持某个特定的距离,墙在车左边时用左边的超声波控制,墙在车右边时用右边的超声波控制,遍历完整 某公司存入银行甲乙两种不同性质的存款共20万元,甲种存款的年利率为1.5%,乙种存款的年利率为3.5%,该公司一年共得利息4600元,求甲乙两种存款各多少万元?(二元一次方程组) i love rock'n roll 的中文意思 汽车前面的小方格是什么如题,如图,起什么作用呢 My bag 英语作文1.What colour is your bag?2.Has it got straps?How many?3.Is it big or small?4.Has it got pockets?How many? 怎样确保汽轮发电机安全运行 明朝因为满清入关和李自成的起义灭亡了,宋朝在金兵南侵时也有钟相杨么的起义,为什么宋朝能保住江山? 谁会写关于My bag的英语作文 龙图腾的详细产生过程 欧洲最高活火山喷发熔岩 在空中形成巨巴西华人协会举行新一届理监事就职典礼新书曝古巴前领导人卡斯特罗曾否认涉肯欧洲最高活火山喷发熔岩 在空中形成巨新书曝古巴前领导人卡斯特罗曾否认涉肯新快报头版就陈永洲收钱发失实报道致歉公务员报考热再起 专家:官本位与户籍嫦娥三号任务运载火箭从北京启程运往西雾霾应急预案受考验 专家:污染源不控道德说教者与偏执窃听狂俄罗斯举行大型集体哺乳快闪活动(组图俄罗斯举行大型集体哺乳快闪活动(组图二战中的情报暗战:丘吉尔为保密牺牲一德外交部长召见美大使 国内热议手机通凯特王妃被传再次怀孕 王室代表称并非纽约时报:东亚首富李嘉诚“脱亚入欧”法新社:中国转向南美化解原油“饥渴”最高层着手“顶层设计” 中国周边外交遭官员强奸女童家长:负担过重不得不民“国考”报名结束152万人过审 最热嫦娥三号任务运载火箭启程 预计11月“hold住姐”改名“亿万姐”?周强 :以零容忍态度查处司法腐败 破云南沧源县11000余人投入抢险救灾第49届全国新特药品交易会在昆举行 云南芒市泥石流灾害交通运输抢险保通进数十人砍刀鱼叉夜总会杀保安 南昌警方赵智勇姚木根被终止江西省人大代表资格张江任江西省人民检察院南昌铁路运输分天津瓷房子:一场古董瓷片粘帖的“行为海南处罚“发霉面包“供货商:吊销许可吉尔吉斯斯坦前总统被控在骚乱事件实施云南双江近万亩林场因暴雨受灾严重 损登陆也扎堆?疯狂台风大揭秘!无眠、饥困、蚁蚊叮咬 云南曲靖供电局天津瓷房子:一场古董瓷片粘帖的“行为篮球比赛活跃西双版纳警营文化海南处罚“发霉面包”供货商:吊销许可昆明市西山区检察院送法进社区 关爱流昆明边检站开展实弹射击训练 锤炼部队老挝政府向西双版纳警方9名民警代表授淘宝·特色中国“楚雄馆”开馆3天销售
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘