Swagger与OpenAPI的区别

2024 年 12 月 25 日 | 阅读 6 分钟

在本文中,我们将讨论 SwaggerOpenAPI 之间的区别。

什么是 Swagger?

Swagger 是用于记录标准 API 的标准。在 Azure 中部署 API 时,Swagger 非常有用。它可以用于内部企业构建 API,或者构建可公开使用的 API。其理念与开发人员在其正在开发的应用中常用的理念相同。

Swagger 使开发人员能够创建、记录、测试和部署 RESTful Web 服务。它可以应用于自顶向下和自底向上的 API 开发策略。在自顶向下或设计优先的方法中,可以在编写代码之前使用 Swagger 来设计 API。在自底向上或代码优先的方法中,Swagger 会分析为 API 编写的代码并自动生成文档。

Swagger 的组成部分

Swagger 为 API 提供各种开源工具,包括:

  • Swagger Editor:它允许开发人员创建和记录新 API,也可以编辑现有 API。此编辑器是基于浏览器的,可以图形化渲染 OpenAPI 规范,处理错误并提供反馈。
  • Swagger Codegen:这使得在各种平台上开发客户端库和 SDK 成为可能。
  • Swagger User Interface:此开源工具可帮助工程师为各种接口创建文档。它可以托管在任何环境中,方便在许多组织中使用。
  • Swagger Inspector:这是一个专注于 API 文档的测试工具。它允许无限制地验证 API,并将结果保存在云端以便轻松检索。

Swagger 的优势

Swagger 的一些优势如下:

  • 它拥有友好的用户界面,提供了 API 外观的蓝图。
  • 像客户或项目经理这样没有编程背景的开发人员和其他人可以轻松理解文档。
  • 产品规范对人类和机器都可理解且优化。
  • 它提供了丰富、易于理解的对话式文档。
  • 它支持用 40 多种语言创建 API 库。
  • 输入格式预计为 JSON 和/或 YAML,便于修改。
  • 它有助于自动化 API 相关流程。

什么是 OpenAPI?

OpenAPI 是 Swagger 的新名称,可用于以人类和机器都能理解的方式指定 HTTP API。它使用 JSON Schema 定义数据,API 在其上构建。OpenAPI 文档可以在 API 生命周期的初始阶段手动创建,也可以从现有 API 代码或流量/日志中创建。

OpenAPI 文档不仅充当 API 规范。最初,它定义了 API 消费者和提供者之间的 API 合约,可用于创建文档、模拟服务器、客户端 SDK 和 API 测试。OpenAPI 文档可用作实现服务器和客户端的蓝图,还可以进行 API 治理检查。

OAS 代表 OpenAPI Specification,开发人员使用此工具创建用于与 RESTful API 通信的应用程序。该规范规定了我们如何与 API 交互,可以请求什么数据以及可以提供什么数据。OpenAPI 还使开发人员能够检查其 API 对推荐标准的符合性水平,并使他们能够与其他服务协同工作。

OpenAPI 参数由开发人员用于创建应用程序以在应用程序中与 API 进行交互。它描述了数据如何与 API 交互。它们使开发人员能够在实际编码之前了解其应用程序将如何运行。软件测试人员还可以使用 OpenAPI 在 API 上线生产之前对其进行测试。

OpenAPI 的特性

OpenAPI 的一些特性如下:

  • 标准 API 描述:OpenAPI 是一个 API 蓝图,使用易于开发人员理解的 YAML/JSON 格式描述 API 的功能。
  • 交互式文档:Swagger UI 就是这样一种工具,它将 API 定义转换为交互式文档,以便在浏览器中处理每个调用。
  • 代码生成:使用 OpenAPI Specification 方法,该工具还可以生成各种编程环境中的服务器和客户端应用程序的存根代码。
  • API 验证:它有助于验证发送到 API 的请求的正确性以及 API 响应的格式。
  • 模拟 API:可以创建像模拟服务器一样的 API,以便在 API 完成之前就可以开始开发和测试。
  • 安全性:OpenAPI 提供有关 API 如何受到保护的信息(例如,API 密钥、OAuth),这表明如何获取访问密钥。
  • 可重用组件:它很高效,因为我们可以重用 API 的某些部分,例如标头或参数,从而节省了我们大量重写代码的时间。
  • 广泛的工具支持:大多数工具都与 OpenAPI 集成,以处理测试、监控和版本控制。

Swagger 和 OpenAPI 之间的主要区别

Difference between Swagger and OpenAPI

Swagger 和 OpenAPI 之间存在一些主要区别。一些主要区别如下:

特性SwaggerOpenAPI
定义它最初是为了定义 API 而开发的。定义 API 的规范,它是 Swagger 的演变。
版本控制Swagger 2.0 是最后一个主要版本。OpenAPI 3.0 及更高版本已发布,并会不时更新。
命名Swagger 通常被认为是与 OpenAPI 相同的,但实际上,Swagger 指的是规范和工具的旧版本。自 3.0 版本起,OpenAPI 是该规范的正式名称。
文档格式Swagger 使用 JSON 或 YAML 来描述 API。OpenAPI 也使用 JSON 或 YAML,尽管已引入了新的结构化格式。
工具Swagger 包含 Swagger UI 和 Swagger Editor 等功能。它们有类似的工具,但这些工具属于 OpenAPI Initiative 家族,例如 OpenAPI Generator。
社区Swagger 有很多用户和集成,但它与 Swagger 工具系列关系最密切。OpenAPI 由 OpenAPI Initiative 管理,该组织由行业内的主要参与者组成。
特点Swagger 2.0 提供路径、操作和模型文档,可用于定义 API 的结构。OpenAPI 3.0 及更高版本提供附加功能,例如调用更高级函数的能力、URL 支持以及对多态性的更好支持。
可扩展性它对供应商扩展的扩展性有限。可以使用 OpenAPI 更详细地定义供应商扩展和自定义属性。API 类型支持 主要关注 REST API。它目前与 RESTful API 集成良好,并逐渐转向兼容 GraphQL 等其他 API 类型。
安全定义Swagger 2.0 引入了基本安全定义。OpenAPI 3.0 提供了一个更全面、更灵活的安全模型,包括 OAuth 2.0、OpenID Connect 等。
内容协商支持有限。OpenAPI 3.0 为 API 的后续内容协商带来了改进的机制。
API 版本控制它通过路径和参数提供基本版本控制支持。OpenAPI 3.0 提供了更清晰、更具指导性的版本控制规则。
行业采用它主要用于 API 文档的初始阶段。通过顶级平台和工具的支持,巩固了其作为 API 规范标准的地位。

结论

总之,SwaggerOpenAPI 确实几乎是同一件事,但我们在此区分它们是因为它们用于不同的目的。OpenAPI 是一个使用人类和机器都能理解的结构化语言来定义 RESTful API 的规范。它为事物的组织方式以及各种 API 如何交互树立了榜样。另一方面,Swagger 是一套旨在与 OpenAPI Specification 一起用于设计、记录和测试 API 的工具。Swagger 具有代码生成、模拟服务器和交互式文档等功能,使 API 开发更加容易。因此,OpenAPI 是一个规范,而 Swagger 是一个在现代 API 开发 中实现该规范的工具。渐渐地,OpenAPI 成为了行业标准,而 Swagger 成为了一个全面的工具集,为开发人员简化了 API 的创建和管理,并为其他利益相关者提供了便利。