摘要:移动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. 不要忘了你的隐私权保护政策及责任

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

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

10大移动API设计技巧相关推荐

  1. RESTful API设计技巧经验总结

    原文:RESTful API Design Tips from Experience 作者:Peter Boyer 翻译:雁惊寒 译者注:本文是作者在自己的工作经验中总结出来的RESTful API设 ...

  2. 原始样式增加标题_好看又实用! 10个标题字体设计技巧

    很多新手设计师刚做海报设计的时候,经常直接使用字库的字体,觉得字体设计很难,所以很少自己去设计字体,其实字体设计有很多种形式,今天我们分享10种常见适用于标题的字体设计技巧,好看又实用,足够让你设计出 ...

  3. 1元解锁 | Python万能代码模板 |10大必学实用技巧

    内容摘要 你要悄悄学 Python,然后惊艳所有人. 一听到 Python 或编程语言,你可能条件反射会觉得"很难".但今天的 Python 课程是个例外,不需要你懂计算机原理,也 ...

  4. 盘点10大知名餐饮设计公司,提供排名参考

    在漫长的发展过程中,餐饮文化已逐渐成为社会发展中一个重要的文化类型.现代餐饮空间设计除了满足人们的功能需求外,更需要传达某种主题信息来满足人们精神文化生活的需要,通过传达深层的主题信息,反映出特定的文 ...

  5. App后台开发运维和架构实践学习总结(2)——RESTful API设计技巧

    前言 移动互联网时代,RESTful API成为越来越重要的移动端和服务器端交互的形式.尤其是在很多互联网公司或者传统行业拥抱移动互联网的时候,一套设计良好的Restful API能够帮助互联网产品支 ...

  6. 避免最常见的 10 大 JNI 编程错误的技巧和工具

    避免最常见的 10 大 JNI 编程错误的技巧和工具 Java™ 本机接口(Java Native Interface,JNI)是一个标准的 Java API,它支持将 Java 代码与使用其他编程语 ...

  7. 架构必备「RESTful API」设计技巧经验总结

    转载自   架构必备「RESTful API」设计技巧经验总结 [译者注]本文是作者在自己的工作经验中总结出来的RESTful API设计技巧,虽然部分技巧仍有争议,但总体来说还是有一定的参考价值的. ...

  8. 从达标到卓越 —— API 设计之道

    摘要: 新技术层出不穷,长江后浪推前浪.在浪潮褪去后,能留下来的,是一些经典的设计思想. 在前端界,以前有远近闻名的 jQuery,近来有声名鹊起的 Vue.js.这两者叫好又叫座的原因固然有很多,但 ...

  9. 面食窗口的API设计之道

    前言 相信每个开发者对于API都不会陌生,最近几十年,随着软件工程行业的发展,自造轮子的情况已经少之又少,每天的工作都不可避免的要用到其他模块或提供提供的API,也有不少人要开发API给其他人用.这篇 ...

  10. 设计静态广告BANNER的10大技巧

    设计完美的静态广告没那么简单,甚至可以说难以实现.设计广告,可能颠覆许多你作为一个设计师的想法.下面是创建吸引眼球广告的10大技巧,其中一些是出现在受欢迎网站上的真实广告案例. 设计完美的静态广告没那 ...

最新文章

  1. 计算机教室怎样自动批量修改ip,批量设置IP地址和计算机名
  2. 火速围观!鹅厂中间件产品遭遇暴风吐槽
  3. VS Code 1.39 发布!Web 版 VS Code 是否离我们越来越近了?(文末彩蛋)
  4. Java IO: FileInputStream
  5. 环形队列的输出_循环队列的基本操作详细讲解
  6. 物联网火爆,开发者却遇到这个大难题!
  7. Asp.net控件开发学习笔记(二)-控件开发基础
  8. wps页眉怎么设置不同页码_wps页眉的页码和页脚的页码不同怎么设置?
  9. Jenkins构建项目
  10. gaussdb 日常运维命令总结【01】
  11. 基于matlab七轴可伸缩关节机械臂物品抓取
  12. photoshop油画滤镜使用和案例教程
  13. 代码主题darcula_如何在带有Darcula主题的黑暗模式下使用NetBeans
  14. 谷歌AdMob广告学习
  15. ubuntu/linux安装Atom
  16. 【个人向】《春物》 小说原文关键段落摘录
  17. Git提交gitlab项目string) [], ParseException +FullyQualifiedErrorId :UnexpectedToken 异常,commit failed
  18. STM32CubeMX系列|ADC模数转换
  19. php判断顺子对子,豹子对子顺子乱子 函数判断
  20. AIX系统下修改SNMP默认连接串名public为其他字符串方法

热门文章

  1. 两步路轨迹文件位置_两步路软件如何将轨迹导出成3D的动态轨迹?
  2. MATLAB 极点图
  3. 用C++编写一个简单的光栅化渲染器:2D篇
  4. 徐霞客与两位回族文艺家的交往
  5. NDC空间(归一化的设备坐标空间)整理记录
  6. Office2019 打开excel表时,提示“文件格式和扩展名不匹配。文件可能已损坏或不安全。”
  7. 英语单词记忆法(来自武汉艺术生文化课科大)
  8. 可再生能源发展要实现“千瓦”到“千瓦时”的转变
  9. 澳大利亚购物网站(java开源+多货币自动更新汇率)搭建
  10. 云架构系统如何做性能分析?| 实战