【AICon】AI 基础设施、LLM运维、大模型训练与推理,一场会议,全方位涵盖! >>> 了解详情
写点什么

API 设计评审已死,API 设计评审万岁

作者 | Jason Harmon

  • 2023-07-05
    北京
  • 本文字数:3131 字

    阅读完需:约 10 分钟

API 设计评审已死,API 设计评审万岁

对大规模的 API 设计而言,一致性是需要花些功夫才能实现的。API 的胡乱堆砌和正经平台的主要区别就在于一致性。而在这种语境下,一致性仅仅意味着多个 API 中命名规则、分页等交互模式、授权机制等因素的统一性。

 

一般来说,评审委员会如果在人们以为工作已经完成后才延迟发现问题,将会给 API 开发者们带来心理创伤。更糟的则是委员会的设计取而代之,从而导致进度拖慢,或者开发者们为求免遭痛苦而想尽办法避开这一过程。

 

若想完全解锁现代平台,去中心化的治理是更易于伸缩和参与的方式。这种方式仅需要在每个领域或功能区都安排一位接受过标准和整体架构训练的专题专家,为 API 开发者们提供良好的引导。

 

更为重要的是,在大部分开发工作完成之前便确定 API 设计,可以在很大程度上避免在最后一刻才发现问题,从而影响交付时间(通常被称作是设计优先方法)。通过 OpenAPI(HTTP/"REST" API 的事实标准)等规格格式,可在所有的开发工作开始之前便定义 API,从而更早地进行调整并识别问题。

 

了解这一背景后,让我们来进一步分析 API 的设计评审要如何开展,流程如何制定,如何让组织做好准备,从而避免拖长的时间表和匮乏的开发者参与感。

 

下文中将列出部分能确保这一过程顺利的关键先决条件。

 

定义一致的语言或术语

 

API 的使用是一项极为精炼的体验,因此语言在其中的影响相较于其他多数设计领域而言,所占据的比例要高得离谱。团队中对不同术语的定义和描述可能会因人而异,其表现形式便是 API 团队的混乱和生产力的下降。

 

虽然 API 门户或文档是良好开发者体验的必需品,但设计优秀的 API 应在无需这二者的情况下便能清晰表述大部分内容。消费者如果熟悉某个术语,且交互模式明显,那么这段体验将会是快速且无痛的。一致性是 API 的堆叠和真正的平台在体验上的主要区别。

 

从共通的语言开始,建立 API 的计划和治理流程。虽然这样乍一看并不现实,但为平台定义一个以客户为中心的共享词汇或语法是至关重要的,这将是组织的整体加速器。许多术语可能在公司内部都有不同的涵义,再加上终端用户甚至大多都不认识这些术语。

 

提前做好这些功课可以避免在 API 设计的过程中因命名而产生冲突。与相关的利益相关者一同定义每个领域中的共通术语,确保 API 设计的广泛使用和了解。确定了内部术语的标准化后,别忘了检查其是否也符合外部的需求。通过使用客户语言和以客户为中心的 API 开发视角,可帮助团队避免因为使用客户不熟悉的技术术语而带来混乱,为此,请确保内部理解和外部理解的同步。

 

定义共享组件

 

API 的消费者在面对 API 之间不同的模型或参数时,可能会遭遇一段困惑、沮丧且耗时颇长的过程。举例来说,一个使用联系信息的 API 与同平台下另一个 API 使用了完全不同的模型,消费者将被迫去处理这二者之间的差异。更糟糕的是,处理数据的系统性差异将会进一步扩大,从而造成功能性上的差异。

 

尽早确定共用的组件(模型、参数、头,等等)和支持其的系统,通过在 API 定义中将共享组件相连,可确保后续对这些组件的修改可轻松在推广至全平台,减轻 API 消费者所不必要的认知负担。

 

所使用的共用组件越多,提升一致性、可复用性,以及后续合作和效率提升的机会便越高。开发者们都喜欢不走回头路的“DRY(Don’t Repeat Yourself) 方法”。共享组件越多,创新也越容易,人们不需要一次又一次地从头开始,重复同样的事情。共享组件还可让团队更迅速地扩展,更轻松地培训 API 团队之外的新开发者或利益相关者。

 

应用共享的风格指南和提示规则

 

多数简单的命名规则、交互模式,以及认证机制,都能提供风格指南的自动化,并提早标记出不一致之处。

 

首个风格指南是于 2013 至 2015 年间制定的,为 API 的开发团队定下了外观和体感(又称 DX)的期望值。一致性的设计需求在 API 平台开发之初就很明显了,在 Paypal(当年作者也是这个团队的一员!)和 Heroku 的早期共同努力下,第一批成功项目的设计指南得到公开分享。

 

虽然能用于协助风格指南的自动化工具有很多,但开源工具 Spectral 已成为定义 API 提示规则集的标准。先对路径、参数等约定俗称的规则进行调整,定义自动提示规则,从而避免因纠结“正确”的规则而带来的冲突。规则一经探讨和确定,就尽量不要再反复讨论这个问题,让错误的提示消失就好了。

 

至于无法自动化的设计标准,应将其记录并使其便于 API 设计者获得。通过培训解释自动化和人工验证规则的重要性,可以为开发者建立全心全意支持这项举措的动力,避免意外和摩擦的发生。

 

在组织上下设立 API 设计审查员

 

虽然应设置一个 API 启用的团队负责策划这些设计标准并促进社区的发展,但也应在每个功能区或领域中启用权威。

 

API 标准固然重要,但系统约束、特定客户需求、组织优劣势等领域知识,最好还是由该领域内的专家来处理。如果指望着集中化的 API 启用团队成员了解公司的一切,那么交付延迟和开发人员脱离这些瓶颈几乎注定是会发生的。

 

培训课程可以成为传播 API 标准重要性的有利技术。此外,人们往往会找到合适的中小企业提供管理权限。寻找那些对 API 表现出热情、对一致性和标准相关性的知识,且在技术上能得到其他同行或上级尊重的人们(作者常称其为“叛逆者”)。

 

成功的 API 开发会涉及组织内的许多人,这些人往往具备截然不同的技能,有的人会构建和部署 API,有的人则能在商业问题的战略层面确定 API 的价值。在探讨设计审查需要牵涉的人员时,别忘了商业利益相关者。通常情况下,仅关注技术方面可能会导致后续的失败。视角越广越好!

 

确保组合或 API 分类的一致性

 

平台内部的产品经理应在 API 组合或目录的整体构成上达成一致。分类有许多不同的形式,它们能对 API 进行整理,让人们在无需清楚明白自己目标的情况下,更轻松地找到自己要找的;也允许潜在用户按功能或其他用户的关注分类浏览可用 API。

 

好的分类应具备搜索和过滤功能,允许开发者轻松缩小选择范围;也应为分类中的每个 API 提供可对比、可接受的细节,让人有清晰的前进路线。

 

尽早通过用例和基本命名的功能性概述,对任何新推出的 API 进行审查,以确保语言的一致性、可复用性,以及新 API 与大平台整体的“契合度”。

 

启用团队中的产品经理负责组合的调整过程,团队成员则应各自负责一个可管理的领域集合。至少也要为特定领域的产品经理提供一个定期讨论的场所。

 

乍一看之下似乎要做很多事,但别忘了,API 的标准应该通过迭代而发展。随着 API 不断被设计,我们会意识到其中完善标准的机会。认识到这点后,我们应确保在前期的准备工作中覆盖基本知识,并确保 API 主管清晰地认知到要如何提出和采用对标准的修改。

 

实施 API 设计审查

 

在达成上述的先决条件后,API 设计审核也就基本完成了。对领域驱动的中小企业而言,设计审查通常可被整合到进行中的设计工作内。如果审查能在早期便于平台相磨合,设计审查人员则能更自信该 API 与大局相吻合。此外,如果 API 设计者在迭代过程中发现了错误的提示,那么除了对开发者培训相关提示性规则,以及简单解决提示性错误外,不应再有关于约定俗成规则的讨论。

 

不是所有东西都能被自动化,有时产品和架构需求会发生冲突。在手动执行管理检查、验证客户语言(这点很难被自动化),以及确定最终一致性之后,再进行 API 设计审查。确立这个时间线后,就不再需要会议时间了,异步的探讨往往便足以。

 

更重要的是密切关注 API 设计审查的周期。随着时间的推移,更多去中心化的中小企业将对现有标准和新标准的采用更加熟悉,API 设计审查频率也应明显地下降。

 

原文链接:


https://www.infoq.com/articles/api-design-review/

 

相关阅读:


使用友好的 API 设计理念

如何快速完成 API 设计,mock 数据给到前端?

深入浅出设计优先的 API 开发方法

开发者必备——API 设计问题

2023-07-05 15:142734

评论

发布
暂无评论
发现更多内容

万字干货分享 | 阿里云CIPU技术解析

阿里云弹性计算

Docker容器安装Nginx教程。

百度搜索:蓝易云

nginx 云计算 Linux 容器 运维

教你如何搭建K8S集群。

百度搜索:蓝易云

云计算 Kubernetes 运维 k8s 集群

LED电子显示屏幕如何计算它的面积

Dylan

广告 交通 LED显示屏 全彩LED显示屏 体育

开源软件下游分发合规性讨论 ——“心寄源”法律沙龙(2023第四期 | 总第九期)成功召开

开放原子开源基金会

开源

精准化测试原理简介

霍格沃兹测试开发学社

Chrome 浏览器+Postman做接口测试 ?

霍格沃兹测试开发学社

小灯塔系列-中小企业数字化转型系列研究——任务管理测评报告

向量智库

HyperDock for Mac(mac窗口调整工具)v1.8.0.10中文激活版

mac

苹果mac Windows软件下载 HyperDock 窗口调整工具

Linux 中的 su 和 sudo 命令有什么区别?

百度搜索:蓝易云

云计算 Linux 运维 sudo su

解决 App 自动化测试的常见痛点

霍格沃兹测试开发学社

微博评论高性能高可用计算架构

艾瑾行

架构训练营

TiDB Bot:用 Generative AI 构建企业专属的用户助手机器人

PingCAP

人工智能 数据库 AI TiDB

“一日之际在于晨”,欢迎莅临WAVE SUMMIT上午场:Arm 虚拟硬件早餐交流会

飞桨PaddlePaddle

人工智能 paddle 百度飞桨 硬件生态

小灯塔系列-中小企业数字化转型系列研究——项目管理测评报告

向量智库

Docker搭建测试用例平台 TestLink

霍格沃兹测试开发学社

Syncovery for mac(文件备份和同步工具) 10.6.12激活版

mac

苹果mac Windows软件 Syncovery 文件同步和备份软件

DTCC 2023,8月16日北京见!

KaiwuDB

KaiwuDB DTCC 2023

如何基于 ACK Serverless 快速部署 AI 推理服务

阿里巴巴云原生

阿里云 Serverless 容器 云原生 Serverless Kubernetes

安徽阜阳是几线城市?有正规等级保护测评机构吗?

行云管家

等保 等级保护 等保测评机构 阜阳

10个微服务设计模式

越长大越悲伤

微服务 微服务设计

融云荣获「2023 中国数字生态通信领军企业」奖

融云 RongCloud

互联网 通信 数字 融云 AIGC

TiDB v7.1.0 跨业务系统多租户解决方案

PingCAP

MySQL 数据库 多租户 TiDB

全链路Trace全量存储-重造索引

乘云 DataBuff

如何快速完成PostgreSQL数据迁移?|NineData

NineData

postgresql 数据迁移 不停机发布 NineData 结构迁移

uiautomator2 自动化测试工具使用

霍格沃兹测试开发学社

Linux系统安装和使用Kafka教程。

百度搜索:蓝易云

云计算 kafka Linux 运维 云服务器

it资产管理软件哪个好?既好用又安全?

行云管家

运维 IT运维 IT资产 IT资产管理

制造执行系统(MES)在新能源领域的应用

万界星空科技

新能源 新能源行业

大模型时代,如何重塑AI人才的培养?知名高校专家为您解答

飞桨PaddlePaddle

人工智能 paddle 百度飞桨

小灯塔系列-中小企业数字化转型系列研究——企业网盘测评报告

向量智库

API 设计评审已死,API 设计评审万岁_后端_InfoQ精选文章