构建高效API的10个API设计最佳实践
在整个API生命周期中进行有意义的协作
当今的企业往往由许多孤立的团队组成,他们努力与领导层的目标保持同步,同时避免制造麻烦或摩擦。为了实现这一目标,大多数API开发团队已经开始以基于OpenAPI、AsyncAPI和JSON Schema等规范的机器可读工件为基础来开展工作。虽然这些工件有助于文档编写和代码生成,但它们往往未能充分发挥其促进协作和沟通的全部潜力。此外,一些大型企业仍然采用瀑布式软件开发模型,导致团队陷入会议和同步通信的困境。这种方法导致了团队之间以及与领导层之间的不一致。
有几个最佳实践可以帮助组织解决这些痛点,即使是在企业规模下也是如此。本文将详细探讨其中的五个。
超越组织孤岛
团队之间变得孤立和脱节的原因有很多。有时是故意的,但更多时候是遗留流程、组织变动和人员流动的结果。在API优先的世界中,每个团队都生产和消费API,团队以自主的方式存在和运营是有道理的——只要他们能够以有意义的方式进行协作。
正是出于这个原因,API优先的团队——特别是那些也是远程优先的团队——会优先定义良好的微服务、支持文档、可重用代码和机器可读工件。
虽然亚马逊首席技术官沃纳·沃格尔斯(Werner Vogels)推广了“两个披萨团队”的概念,即团队规模小到可以用两个披萨来养活,但API优先模式才是使亚马逊能够超越组织孤岛的关键,它提供了通用的API认证、文档、软件开发工具包(SDK)和反馈循环。
通过机器可读工件推动协作
在企业微服务和API环境中,存在太多的细节,任何个人或团队都无法全部跟踪。因此,功能最强大、协作性最强的团队会利用JSON Schema来映射出运动中大量的对象,并依赖OpenAPI和AsyncAPI来定义对这些对象的同步和异步访问。
机器可读工件有助于团队了解他们组织中当前存在的数字资源和能力,并允许他们预测这些对象及其访问的未来迭代将如何呈现。通用的API规范还通过使团队能够为API环境中的数千个工件、资源和能力建立共享和可重用的生命周期定义,从而促进更好的协作。
重要的是,团队要意识到OpenAPI、AsyncAPI和JSON Schema不仅仅用于文档编写和代码生成。在API生命周期的整个过程中,甚至在不断扩展的企业运营环境中,它们也在保持人类和机器之间的同步方面发挥着至关重要的作用。这使得人类和机器能够以更高的速度、更自信地前进,而不会遇到许多传统瓶颈。
异步通信
API优先模型强调将Slack、Teams等通信工具集成到现有工作流程中的重要性。这种策略通过将机器可读工件引入对话中,增强了团队现有的沟通方式。例如,团队可以将特定API规范、对象或机器可读文档的属性附加到任何通信线程中,这可以包括位于不同时区的团队成员。
这种异步的、以工件为驱动的通信方式带来了几个好处。首先,它比预定的会议要快得多,有助于消除常见的开发瓶颈。
其次,它使交互以特定的存储库和工作区为基础,使团队能够更容易地就API路径或通道的设计进行协作,相互提醒需要特定的头部信息,或者就参数和架构属性的正确大小写进行辩论。这种工作流程留下了每个更改及其相关讨论的历史记录,其他团队可以利用这些信息来指导他们自己的方法。
赋予团队自主权
按领域、职能、地理区域或其他逻辑边界划分团队是很有意义的——只要他们具备成功所需的装备。领导者应该通过确保团队拥有已知的工作空间以及所需的技能和工具来减少障碍和摩擦,然后放手让他们去做。
团队不应该考虑如何建立他们周围的世界,但他们应该有权定义自己的需求,设定自己的路线图,并做他们需要做的事情来让他们的微服务实现。
值得注意的是,赋予团队更多自主权也会增加他们的责任感。拥有更大自主权的团队不仅要支持自己的消费者,还有责任优化自己作为消费者对其他团队的依赖。每个团队中的每个开发人员都应该理解,以API为先的生产者和消费者之间的关系是双向的。
提高运营可见性
使用存储库和工作区来为团队工作奠定共同基础是非常重要的。这默认支持了发现功能,并确保团队能够以异步和持续的方式在机器可读工件上进行协作。
工作区支持本文中讨论的其他最佳实践,并帮助企业为推动API发展的团队间反馈循环建立沟通服务级别协议(SLA)。工作区还为企业提供必要的运营可见性,以便更自信地前进并实现其业务目标。
如何通过幂简集成发现API
幂简集成是国内领先的API集成管理平台,专注于为开发者提供全面、高效、易用的API集成解决方案。幂简API平台提供了多种维度发现API的功能:通过关键词搜索API、从API Hub分类浏览API、从开放平台分类浏览企业间接寻找API等。
此外,幂简集成博客会编写API入门指南、多语言API对接指南、API测评等维度的文章,让开发者选择符合自己需求的API。
文章地址:https://blog.postman.com/meaningful-collaboration-across-the-api-lifecycle/