程序员心髓:移动应用API设计10大技巧
移动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
本文为CSDN编译整理,未经允许不得转载。如需转载请联系market@csdn.net。
程序员心髓:移动应用API设计10大技巧的更多相关文章
- 极客时间-左耳听风-程序员攻略-UI/UX设计
程序员练级攻略:UI/UX设计 学习设计新手, 7 steps to become a UI/UX designer 学习设计的一些原则和套路,如配色.平衡.排版.一致性等. 用户体验的 4D 步骤- ...
- 30个有关Python的小技巧,给程序员的 30 个基本 Python 贴士与技巧
30个有关Python的小技巧 2013/07/04 · Python, 开发 · 4 评论 · Python 分享到: 66 本文由 伯乐在线 - Kevin Sun 翻译.未经许可,禁止转载!英文 ...
- 快速开发 jQuery 插件的 10 大技巧(转)
1. 把你的代码全部放在闭包里面 这是我用的最多的一条.但是有时候在闭包外面的方法会不能调用.不过你的插件的代码只为你自己的插件服务,所以不存在这个问题,你可以把所有的代码都放在闭包里面.而方法可能应 ...
- Java程序员们最常犯的10个错误
将数组转化为一个列表时,程序员们经常这样做: List<String> list = Arrays.asList(arr); Arrays.asList()会返回一个ArrayList对象 ...
- [转]Java程序员们最常犯的10个错误
1.将数组转化为列表 将数组转化为一个列表时,程序员们经常这样做: List<String> list = Arrays.asList(arr); Arrays.asList()会返回一个 ...
- Java程序员们最常犯的10个错误(转)
1.将数组转化为列表 将数组转化为一个列表时,程序员们经常这样做: 1 List<String> list = Arrays.asList(arr); Arrays.asList(&quo ...
- (网页)Java程序员们最常犯的10个错误(转)
转自CSDN: 1.将数组转化为列表 将数组转化为一个列表时,程序员们经常这样做: List<String> list = Arrays.asList(arr); Arrays.asLis ...
- [转]成为优秀Java程序员的10大技巧
转自:http://www.codeceo.com/article/10-good-java-programmer-tips.html Java程序员有许多应遵循的守则或最佳实践方式.本文概述了每个开 ...
- 程序员不得不知道的 API 接口常识
说实话,我非常希望两年前刚准备找实习的自己能看到本篇文章,那个时候懵懵懂懂,跟着网上的免费教程做了一个购物商城就屁颠屁颠往简历上写. 至今我仍清晰地记得,那个电商教程是怎么定义接口的: 管它是增加.修 ...
随机推荐
- 手把手教你vue配置请求本地json数据
本篇文章主要介绍了vue配置请求本地json数据的方法,分享给大家,具体如下:在build文件夹下找到webpack.dev.conf.js文件,在const portfinder = require ...
- python3的一些文件操作的脚手架
用python把原来的脚本重构了一下,其中写了文件操作的一些函数,如下: import os import shutil import hashlib import stat #查找文件夹中的某个文件 ...
- Elasticsearch入门教程(二):Elasticsearch核心概念
原文:Elasticsearch入门教程(二):Elasticsearch核心概念 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:ht ...
- vue中如何引入css文件
两种方式引入css文件,一种是直接在main.js中引入(也可以在其他的.vue文件中的<script></script>标签中),即下面这种写法: import 'eleme ...
- centos--软件源--本地软件源---离线安装
一.软件源配置文件 1./etc/yum.conf 配置文件 [main] cachedir=/var/cache/yum #yum下载的RPM包的缓存目录 keepcache= #缓存是否保存,1保 ...
- windows server :远程桌面服务当前正忙,因此无法完成您尝试执行的任务
原因是:Csrss.exe 进程和某些应用程序 (例如,Microsoft Excel 或 Microsoft Visio) 之间发生的死锁情况下会出现此问题. 解决:下载一个修复补丁,安装后重启服务 ...
- Laravel5学习
[1]缓存问题 laravel中使用的配置文件,都会放在config目录下面,当变更某个参数的时候,如果发现不生效,可以在命令行下面执行 php artisan config:clear 命令才清除 ...
- CentOS 7.4 下安装部署Nagios监控系统详细攻略(三)
Nagios是一个流行的电脑系统和网络监控程序,它检测主机和服务,当异常发生和解除时能提醒用户.它是基于GPLv2开发的开源软件,可免费获得及使用. nagios工作原理 nagios的功能是监控服务 ...
- gcc编译动态链接库
以下是windows环境下用gcc编译动态链接库的尝试过程. 环境准备 编译使用的MinGW,64位的官网可以找到下载地址. 项目建立及代码编写 在任意地方新建一个目录,保存这个项目,然后新建一个c源 ...
- IO模型对比:同步、异步、阻塞、非阻塞
最近工作接触到了网络服务同步和异步,所以学习了下<UNIX网络编程>,在此作下总结. 一.I/O模型 输入/输出(I/O)是在主存和外部设备(如磁盘驱动器.终端和网络)之间拷贝数据的过程. ...