OpenAPI 规范(OAS)概述

OpenAPI 规范(OAS) 提供了一种在 API 生命周期的每个阶段中传递信息的统一方式。

它是一种用于 HTTP API 的规范语言,定义了 API 的结构和语法,而不依赖于任何特定的编程语言。

API 规范通常使用 YAML 或 JSON 编写,方便共享与解析。

借助 OAS,你可以快速了解一个 API 的工作方式。 由于它与编程语言无关,你可以轻松识别和理解服务的能力。 你还可以使用 OAS 来配置基础设施、生成客户端代码以及为 API 创建测试用例。 因此,OAS 能在整个 API 生命周期中支持你的工作,并帮助你与组织内外的开发者社区进行沟通。


什么是 OpenAPI?

向他人(同事、合作伙伴公司、或你的 API 用户)提供你 API 的定义,是业务中至关重要的一环。 API 经济的成功正是建立在 可重复、简洁且确定性强的 API 定义 基础之上,并且要使用 API 消费者能够理解的语言来表达。

API 规范语言为此提供了一种标准化的方式。 你可以用与编程语言无关的术语来描述 API,从而将其与实现语言解耦。 API 的使用者不需要了解你应用程序的内部结构,也不必去学习 Lisp 或 Haskell(假设你的实现是用这些语言写的)。 他们只需通过简洁且表达力强的语言,就能准确理解从你的 API 规范中需要的信息。

OpenAPI 规范(OAS) 正是为此而生的开放标准。 它允许你以 JSON 或 YAML 文件的形式提供 API 规范,用于描述你的 API。 OAS 提供了一套全面的术语字典,涵盖了 API 领域中普遍理解的概念,内嵌了 HTTP 与 JSON 的基本原理。 当与相应工具配合使用时,它能在一个简单的文档基础上,提供丰富的开发体验。


OAS 在 API 生命周期中的作用

提供和使用 OAS 文档并非一次性的行为。 它是 API 生命周期的核心组成部分,为从设计构想到部署与运维的每个阶段提供支撑。 如果把 API 生命周期比作一张交通网络,那么 OAS 就像一条主干道路,高效地传递大量重要信息。

当我们观察整个 API 生命周期时,就能明白 OpenAPI 文档的价值所在。 下面是一个简化的 API 生命周期模型,它基于 API 优先设计(API-first design) 的理念: 接口先于代码实现而设计。 OAS 可以在该生命周期的每一个阶段发挥作用。

(注:在真实组织中,API 生命周期会比上述模型更复杂,也会根据不同的软件开发流程(如敏捷开发)进行多次迭代。 不过,这种简化视角仍能清楚地展示 OAS 在每个阶段的价值。)


使用 OAS 辅助需求分析

生命周期的第一步是 需求阶段(Requirements),即开始形成对 API 的构想。 “形成构想”涵盖了多种不同的活动——既有技术层面的,也有业务层面的。 需求收集通常要与业务团队合作,明确 API 要为消费者提供什么能力,以及它如何支持整体产品功能。

技术人员在落实这些需求时,需要一种方式来表达它们。 OAS 提供了一种 与技术栈无关、可移植、快速共享的描述手段。 它使得开发者能快速把想法转化为文档,与其他利益相关者沟通,而无需复杂配置。

在需求阶段使用 OAS 草拟你的 API 设计,可以在后续设计阶段获得先机。


OAS 在设计阶段

设计阶段(Design),我们会将需求(无论是否已在 OAS 文档中初步勾勒)转化为可执行的设计方案。 无论你的起点是空白文档、带注释的控制器类、还是设计工具中的可视化模型, 关键是最终要能生成一个可供他人使用的 OAS 文档。

如果你采用 API 优先设计(API-first),常用的工具是 OpenAPI 编辑器或带 OpenAPI 插件的 IDE。 此外,组织内部还可能配合使用一系列支持设计活动的资源: 设计模式、基于行业标准的 Schema 对象、组织的数据模型等。

无论使用什么工具或资源,OAS 都是设计阶段的核心产出。 一个定义清晰、可版本化的规范文件,对于后续步骤的准确性与效率至关重要。 将 OAS 文档纳入版本控制系统,可确保后续开发基于清晰一致的输入进行。


OAS 在开发阶段

当 API 设计完成后,就需要开始编写代码,实现 API 的功能。 在这个阶段,开发团队要根据 OAS 文档来驱动实现过程。

在 API 优先设计模式下,OAS 文档先于代码生成。 而在 代码优先(code-first) 模式下,开发者先实现功能,再通过注解生成 OAS 文档。

无论哪种方式,若采用 API-first 方法,那么详细的 OAS 文档是实现的关键。 OAS 拥有丰富的工具生态,可以通过规范自动生成服务端代码,例如控制器类,从而加速实现并确保设计与实现一致。

当然,实现 API 只是生命周期中的一个步骤,其他活动也依赖 OAS 才能顺利进行。


使用 OAS 配置基础设施

大多数组织在对外或对内开放 API 时,都会通过基础设施层来保护 API、并统一部署模式。 API 管理(API Management) 是其中最常见的架构组件。

API 管理的主要功能包括:

  • 保护 API 免受恶意攻击;
  • 提供基于生命周期的管理功能,确保 API 平稳运行。

多数 API 管理工具支持将 OpenAPI 文档作为配置输入,例如: 自动生成 API 网关配置,实现路径和参数验证、请求体校验,以及安全系统联动。

其价值在于 效率: 有了 OAS 文档,配置从繁琐的手工步骤变为“点击即可”的操作。 同时使用同一份设计时生成的文档,也降低了维护和管理成本。


使用 OAS 提升开发者体验

效率这一理念在提升 开发者体验(Developer Experience) 时同样适用。 无论是公开 API、合作伙伴 API,还是内部 API,OAS 都能帮助你快速、统一地对外发布信息。

很多开发者希望直接获取原始的 OpenAPI 文档以供自用。 API 提供方不仅可以附加文档说明(这些说明也可嵌入 OAS 文档中), 还可以基于 OAS 借助工具生成开发者门户, 让用户在浏览器中交互式地“试用 API”, 或生成多语言 SDK,极大提升使用体验。

当然,OAS 只是基础。 优秀的 API 提供方通常会在此之上打造更具吸引力的内容与品牌体验。 不过,OAS 为这些体验提供了统一的结构支撑。


使用 OAS 进行测试

开发者体验通常从 API 消费者的角度出发,但 OAS 同样为测试团队提供了极大帮助。 API 提供方需要确保其 API 的质量与正确性。 要做到这一点,测试团队同样需要理解 API 的结构、参数、请求与响应定义。 编写和执行测试用例需要与 API 消费者同样深入的理解。

如今,许多测试工具都已将 OAS 作为核心输入,例如:

  • 契约测试(Contract Testing):验证设计与实现是否一致;
  • 安全测试(Security Testing):检查实现中是否存在潜在漏洞。

OAS 文档定义了 API 的“预期行为”,从而提供了一个判断标准, 用于检测是否存在意外暴露或弱安全实现。

因此,测试阶段是 OAS 发挥重要价值的又一个环节。 将 OAS 作为输入,不仅加快测试速度,也提供了可重复的测试机制。


💡 最后的思考

生命周期的最后阶段是让 API 可供用户使用。 部署 API 不仅仅意味着安装软件实现。 还需要结合 API 管理与开发者体验, 让 API 消费者能够顺利地使用产品或服务,并理解其工作原理。

本文展示了 OAS 在 API 生命周期各阶段的作用。 OAS 通过在各个阶段传递一致的信息, 将整个生命周期连接起来, 帮助 API 提供方确保一致性与质量。

想要进一步了解 OAS? 请参阅《OpenAPI 规范入门指南(Getting Started with OpenAPI Specification)》,

并浏览我们的工具目录,了解支持 OAS 的开源与商业工具。

参考资料