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

程序员心髓:移动应用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

最简单的C语言顺序程序设计-C语言教程 分支结构程序-C语言教程 循环控制-C语言教程 数值数组-C语言教程 字符数组-C语言教程 函数(上)-C语言教程 函数(下)-C语言教程 预处理命令-C语言教程 C语言指针(上)-C语言教程 C语言指针(下)-C语言教程 结构体与共用体-C语言教程 位运算-C语言教程 文件处理-C语言教程 谭浩强C语言教程 C语言创建链表并实现插入、删除数据 C语言中队列Queue的操作 C语言实现堆栈stack操作 C语言建立和遍历二叉树 C语言冒泡排序法演示代码 C语言实现堆排序(Heap Sort) jQuery Ajax以JSON格式传递结果数据 微软称为WP8开发的应用不兼容WP7手机 WP8开发者必读 关于WP8开发者程序开发语言选择倾向的问题 强大的C#随机字符串生成器 C#上传文件到WEB服务器 WebClient的超时设置 MySQL备份脚本大全 c#对rar或zip文件进行压缩解压缩 c#采用递归非递归两种方式遍历目录下所有文件 使用DataContractJsonSerializer进行JSON序列化的JSONHelper类 设计物流系统应该考虑那些问题,实现那些功能,拜托 php中的register_globals为off,怎么获得url中传递参数 设计物流系统应该考虑那些问题,实现那些功能,拜托 上海日記:震撼 这是为什么? 在JBuilder 下 如何单步debug SOAP 服务器端程序? 求助:手机短信是以什么编码发送的呢?UTF还是普通的GB2312? 另外移动和联通用的编码一样么? 急求《c#高级编程》2nd 英文版! windows 2003 下我的p4x266e 板载声卡驱动好了,但是没有声音,怎么解决? SOS:菜鸟问题! 如何来判断字段类型????初级问题..... 求助:请问vbscript什么函数可以让一个单精度的数保留两位小数 wps2000加密文件问题 程序员调查 C/S下如何访问ODBC数据库,客户端不配置任何东西。 大家有何看法???????????? 程序在系统启动时起动,如何做? 局域網計算機間訪問問題﹐進來看看﹗﹗ 为什么我向数据库插入数字时总是出错? 做网页是用切片好做还是用表格好? ftp代码,求救 中秋节,你和MM咋过的,有过风花雪月的事吗? 庆祝升级!!!一夜间有多了一条裤衩,爽歪歪了 我想捕获特殊字段…………高分…… 如何在iframe中表格边框成虚线? Repeater模版列中如何动态添加checkbox控件? 局网能用,internet上该如何用? 请问如何将自已做的网站在sohu、sina上做链接?收费吗? 请问ID怎么传送!!! 传递参数?? 请教高手:码距、码字概念,请举例说明。 原来有朋友问过我流水号要怎样生成才好,今天把这个函数奉献给CSDN里的新手们! 在PHP中有没有表示“千分位”的函数呢?怎么实现呢 开发工时问题,有数据库开发经验者请进 想上一套抄表系统,熟悉的清介绍一下功能,构造以及价格 TListView出现List index out of bounds 错误 在html里面实现在线播放时怎么定制自己的界面?? 请问谁知道 Result中的getArray()怎么用?如何将得到的sql数组转换成String[]或int[]? 请问用xdoclet生成ejb存根类具体是怎么做的 求助:我想要一个在单文档中使用滚动条的例子,只要很简单的就行,谢谢! applet问题,找了很多论坛高手都没有人能解决! 如何取得客户端的ip 急问:怎样把从库中读取的文件保存在客户端指定的文件名? 高分求助,有没有人见过一个叫TTF160_TLB的pas或dcu文件?在哪儿可以找到 请教:BSTR如何正确使用 小弟初学delphi问个问题 大力救救我!!! 各位可不可以说说,大家在对录入的数据审核时,该如何实现???? 救我呀,复制问题 请教一个简单的Asp密码验证问题! document.all('0') 代表的什么?是什么意识啊?在线等待!! 下列集合A到集合B的对应关系中,不能确定y是x的函数的是1)A={X|X∈Z} B={y|y∈Z},对应法则f:x-y=x\3(2) A={(x,y)|x∈R,y∈R} B={(X,Y)|y=5x²} f:(x,y)-(2x,-y)(3) A ={X|-5≤x≤5} B={y|-5≤y≤5},f:x-x²+y& 下列从集合A到集合B的对应关系中,不能确定Y是X的函数是 请写明理由A={x|-1≤x≤1,x∈R},B={0},对应法则f:y=0答案是符合,但系就算X怎么变,Y也始终是0啊,怎么符合函数标准了 集合A={X|0≤X≤4} 集合B={Yl0≤Y≤2},下列不表示从A到B的函数的是a y=二分之一Xb y=三分之一xc y=三分之二Xd y=根号X 唯美的短句子. 第5、6、7题 一个正方形ABCD,AB为8,AC为对角线N为其上一点,M为DC的一点DM为2,求ND+MN的最小值 谁知道我学年总结的那张表丢哪儿去了? 埋藏的近义词是什么 埋藏的近义词快 埋藏 强烈 垂直 遥远 光临 居然 欢声笑语哪些是近义词 对于命题P 非P,p的否命题,三者到底什么意思又有什么联系啊 菲律宾议员“港人生命值钱说”激起香港俄罗斯核武部队大规模战略演习 抗衡北台湾花莲发生6.7级地震 杭州等多地医生举报官员公款出游 出门戴钢盔执擀美国务卿将访欧洲中东八国 重申与沙特俄律师称斯诺登在俄找到工作 新工作与\"免费\"医疗让俄罗斯进退两难 仅多航班遭炸弹威胁嫌疑人落网 因向父亲万圣节网友微博晒疯狂造型 惊现金正恩巴基斯坦警方在卡拉奇逮捕97名犯罪嫌北京数十村民阻拦农田被承包种树时遭打千亿资本流向汽车互联网+听过卖肾、卖身、卖粉,可还真没听过卖周五多头是否在尾盘之处进行大反攻?准什么是小产权房 购买小产权房注意事项孵化式众筹真正解决中国创新创业难题ღ家电清洗有妙招,该给你的家电洗个澡让人们放心选购二手车,中国汽车市场差P2P平台首次牵手中华社会救助基金会那些疯狂的床!太惊艳了~100个姑娘100个爱上他林总别闹了,UC真会反对充值返利?西游岁月召唤悍妞帝女人心不蛊异界邪魔战神抗日之快意恩仇夙夜宫声我的师父是王语嫣修真通行证黑色感情线战国奇缘延福寺旅游俞源太极星象村旅游郭洞旅游熟溪桥旅游观音峡旅游海埂大坝旅游金殿公园旅游石浦环港游旅游檀头山岛旅游月亮岛旅游弘福寺旅游
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘