WEB API 的应用场景非常丰富,例如:将已有系统的功能或数据开放给合作伙伴或生态圈;对外发布可嵌入到其他网页的微件;构建前后端分离的 WEB 应用;开发跨不同终端的移动应用;集成公司内部不同系统等等。在上述场景里,你可能是 WEB API 的使用者,也可能是设计者,但你知道如何评判 WEB API 的优劣吗?
评判标准
我们可以从三个维度来评判一个 WEB API 的优劣:
易于使用:WEB API 的用户是程序还是人?我觉得首先是人,然后是程序。为什么这么说呢?是否采用某个 WEB API 的决定是人做出的,一个好的 WEB API 必须符合人的审美,例如:简短易记、通俗易懂、便于输入等。从程序角度看,WEB API 应该遵循行业规范,在调用时不需要做特殊化处理,有利于复用已有的代码或工具。
便于更改:一个 WEB API 发布上线之后,免不了要根据真实用户的反馈或者业务发展的需要做更新修改,这些更新修改必须尽量不影响用户。要么提供多版本支持,要么给用户提供切实可行的更新策略等等。
健壮稳定:对外公开的 WEB API 存在被攻击的风险,以及无法准确预估的访问量等,一个好的 WEB API 必须要有防注入、防篡改、防重放等安全机制,还要在访问量急剧上涨时避免服务被击穿。
做到了上述三个方面,我们才有底气将一个WEB API对外开放,接受公众的检验。好的 WEB API 不仅方便使用,还助于提升个人或企业的技术影响力,从而形成正向循环,带来越来越多的业务价值。为了设计出优美的 WEB API,我们需要了解与之相关的设计规范和事实标准,并且在设计开发过程中尽量遵循它们。
设计规范
URI
便于输入的 URI,简短不冗余。每个 WEB API 都是一个服务,那下面反例当中的 “service” 就是冗余的,而且 “api” 也重复出现了两次,这种冗余都不利于记忆和输入:
URI 最好由名词组成。URI 的全称是统一资源定位符(Uniform Resource Identifier),用于标识资源在互联网上的位置,类似于邮寄地址,而地址都是由名词组成的。在名词使用上也有一些需要注意的事项:其一,使用名词复数形式;其二,尽量采用多数 API 中使用的表示相同含义的单词;其三,通过尽可能少的单词来表示;其四,尽可能不用奇怪的缩略语等。
按照版本编号增长的规则,WEB API 的版本编号只需要标注主版本编号就可以了,因为次版本编号、补丁版本编号的增加都可以做到向下兼容,不会影响用户使用,唯有主版本编号增加才需要用户更新升级。除了标注版本信息之外,我们在对外发布 WEB API 时还需要设计好版本变更的策略,例如:老版本提供多久的过渡期、同时兼容多少个版本、特定版本的终止日期等等。
总结
何为优美?就是符合大众审美的,对于 WEB API 来说,就是符合标准规范的,这有利于降低用户学习和使用的成本,便于交流,不存在隐没成本。通常,业界存在的标准规范和事实标准都是经过实践筛选出来的,从遵循模仿开始,然后再找机会创新,而不是一上来就重复发明轮子。
WEB API 设计领域的标准规范就是 URI、HTTP 等,我们要最大程度地利用这些协议规范,让每个 WEB API 都是用户友好(易于使用)、技术友好(支持缓存、易于更改)的。