BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

业务流程层的API

| 作者 Saul Caganoff 关注 1 他的粉丝 ,译者 李彬 关注 1 他的粉丝 发布于 2013年12月28日. 估计阅读时间: 3 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

Netflix API的工程主管Daniel Jacobson最近在The Next Web上发表了一篇文章,他表示:我们需要理解谁是API的使用对象,以及他们的使用的方式,并在此基础上进行API设计。这看起来是显而易见、理所应当的事情,然而Daniel接下来写道:过去那种传统的“万应灵药”般的面向资源的API,或许并不能满足使用我们API的用户中最重要的那些人。良好的API设计不只是关于“资源建模、负载格式、如何管理系统版本以及安全”,更加根本的问题是:“谁是这些API的主要受众,以及我们应该如何来针对他们进行优化?”

面向资源的API或许适用于“广泛的未知开发者”,但实际上大部分组织机构需要满足的是“少量已知开发者”的需求,以及特定的用例。“他们或许就是API团队楼下的工程师、或许是一家被雇用以开发iPhone应用的合约公司,又或是来自合作公司的一支工程团队,”Daniel写道,而优化API的机会正蕴藏在这些情景中。

许多公司正在逐渐向其体系架构中引入API编排层——Daniel将其定义为“一个抽象层,它运用通用建模的数据元素和/或特性,并以一种更具体的方式处理它们,从而为某个目标开发者或应用做准备。”Daniel列出了部分编排层的关键准则如下:

  1. 大部分API提供者设计的目的,都是为了维护数据模型的纯净度。然而在构建 [编排层]时,我们需要做好在某些时候牺牲纯净度以换取优化和/或性能的心理准备。
  2. 许多API团队设计API,以求让自己更易于提供支持。然而在构建 [编排层]时,我们需要做好可能会对增加团队工作复杂性的心理准备。
  3. 了解API受众的广度非常重要。针对受众的不同成分,有时候我们或许只需要 [编排层]。而在其他一些情况中,我们除了[编排层]之外,或许还需要[万应灵药]式的基础。

第二条准则让人想起了接口设计中常见的类似情况:为一个“聪明的”视频记录软件增加内部复杂度,以便让外部用户更易于使用。

在文章的最后,Daniel给出了三个常见的用例,包括将编排层用于针对特定设备的包装器、支持一套基于查询的API,以及提供基于经验的API。Daniel表示,针对特定设备的包装器是他所见过的最常见的用例,例如针对iPhone优化的API包装器。此类针对特定设备的包装器一般由API团队为特定消费者提供。相反,基于查询的API把权力交给了API使用者——让使用者掌控,“允许他们就像访问数据库一样,通过灵活的参数和负载去查询[资源]”。

Netflix采用的模型是基于经验的API,同时也混合了其他两个用例——针对特定设备设计和实现,并由API用户所拥有的包装器。负责的部门被划分为API团队——负责以通用的、可复用的方式提供数据;以及使用者——掌握数据格式和交付。

Daniel总结道,API团队需要将API的使用者视作设计过程中的伙伴进行协作,以便尽可能地让最终用户获得最佳体验。

查看英文原文:The API Orchestration Layer

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

第二条最终还是必须做 by 杨 浩

对于第二条,如果不去做,那就是复杂度推给用户了,那么既然用户能解决,那反过来说实际上api提供者也能做得更好。。。。

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

1 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT