术语讲解:OpenAPI、OpenAPI(Swagger)、Swagger、SpringDoc

张开发
2026/4/4 21:59:15 15 分钟阅读
术语讲解:OpenAPI、OpenAPI(Swagger)、Swagger、SpringDoc
这里OpenAPI、OpenAPISwagger、Swagger、SpringDoc 有什么关系 dependency groupIdorg.springdoc/groupId artifactIdspringdoc-openapi-starter-webmvc-ui/artifactId version2.5.0/version /dependency你提到的这几个术语确实容易混淆我来帮你理清它们的关系。一句话总结OpenAPI 是“标准”Swagger 是“前任工具”SpringDoc 是“Spring 里的实现”。详细关系图text┌─────────────────────────────────────────────────┐ │ OpenAPI │ │ (API 描述规范类似 JSON 格式的接口说明书) │ └─────────────────────────────────────────────────┘ ▲ │ 实现/生成 │ ┌────────────────────────┴─────────────────────────┐ │ Swagger │ │ (旧称Swagger 规范 → 捐给 OpenAPI 后改名) │ │ 工具集Swagger UI、Swagger Editor、Swagger Codegen│ └───────────────────────────────────────────────────┘ ▲ │ 集成到 Spring │ ┌────────────────────────┴─────────────────────────┐ │ SpringDoc │ │ (Spring Boot 自动配置库生成 OpenAPI 文档) │ │ 你引入的依赖就是它springdoc-openapi-starter... │ └───────────────────────────────────────────────────┘逐个解释1. OpenAPI规范是什么一种语言无关的 RESTful API 描述规范用 JSON/YAML 格式定义接口的路径、参数、响应、认证方式等。版本目前主流是 OpenAPI 3.x你用的 springdoc 2.5.0 支持 OAS 3。类比就像 HTML 是网页结构的规范OpenAPI 是 API 结构的规范。2. Swagger旧称 工具集历史最初公司叫 Swagger他们制定了 Swagger 规范。后来将规范捐给 Linux 基金会改名为 OpenAPI。但他们的工具套件继续叫 Swagger。工具包括Swagger UI可视化展示 API 文档的界面你访问/swagger-ui.html看到的就是它。Swagger Editor在线编写 OpenAPI 文档的编辑器。Swagger Codegen根据 OpenAPI 生成客户端/服务端代码。所以人们常说“Swagger 文档”实际指的是“符合 OpenAPI 规范的文档”。3. SpringDocSpring 的实现是什么Spring Boot 官方推荐的自动生成 OpenAPI 文档的库。它会扫描你的 Controller、DTO、注解等自动生成/v3/api-docs端点输出 OpenAPI JSON并提供 Swagger UI 界面。你引入的依赖springdoc-openapi-starter-webmvc-ui包含了核心生成逻辑自动配置 Swagger UI开箱即用无需额外配置替代品早些年 Spring 生态用 Springfox已停止维护现在官方推荐 SpringDoc。把它们串起来当你访问http://localhost:8080/v3/api-docs时SpringDoc扫描你的代码生成符合OpenAPI 规范的 JSON。然后Swagger UI被 SpringDoc 集成读取这个 JSON渲染成漂亮的交互式文档页面。所以你实际上在用SpringDoc生成→ OpenAPI 3.0 规范中间格式→ Swagger UI展示。常见误区澄清❌ “Swagger 规范已经过时了” → 规范已改名为 OpenAPI但 Swagger 工具仍然在用。❌ “SpringDoc 就是 Swagger” → SpringDoc 是一个实现Swagger 是一套工具集。✅ 日常口语说“给接口配个 Swagger”没问题大家都懂但心里要明白底层是 OpenAPI SpringDoc。希望这个解释能帮你彻底分清这几个概念。我再换个更直观的比喻帮你彻底理解。一句话核心OpenAPI 是“菜谱格式标准”Swagger 是“做菜的工具箱”SpringDoc 是“自动根据你炒菜过程生成菜谱的机器人”。详细拆解1. OpenAPI —— 菜谱格式标准想象有一个标准规定每一份菜谱必须包含“菜名、食材、步骤、烹饪时间”。这个规定本身不能做菜也不提供工具它就是一套写法规范。在你的项目里OpenAPI 就是那个 JSON 格式的规范定义了paths、components、responses应该怎么写。2. Swagger —— 工具箱含多种工具Swagger 公司最早做了两件事发明了上面那个菜谱标准后来捐了改叫 OpenAPI做了一套实用的工具比如Swagger UI把菜谱渲染成漂亮的图文页面方便人看。Swagger Editor在线写菜谱的编辑器。Swagger Codegen根据菜谱自动生成做菜代码客户端/服务端。所以即使标准改名叫 OpenAPI工具依然叫 Swagger。就像“微软 Office”这个品牌名称不变但里面的文档格式标准可能叫 Office Open XML。3. SpringDoc —— Spring 里的“自动菜谱生成器”它专门为 Spring Boot 项目设计扫描你写的 Controller相当于看你实际怎么炒菜自动提取信息生成符合 OpenAPI 规范的 JSON 文档自动写出菜谱同时帮你把 Swagger UI 集成进来让你能直接看漂亮的菜谱页面你添加的依赖springdoc-openapi-starter-webmvc-ui就干了这三件事。它们之间的实际流程你启动 Spring Boot 项目 → SpringDoc 扫描你的代码 → 生成 OpenAPI JSON位于/v3/api-docs → Swagger UI 读取这个 JSON → 在/swagger-ui.html展示漂亮界面。常见误解澄清❌ “我用了 SpringDoc就不需要 OpenAPI 了”→ 错。SpringDoc 的输出就是 OpenAPI 格式你其实一直在用 OpenAPI只是没直接写 JSON。❌ “Swagger 和 OpenAPI 是互相替代的关系”→ 不是。Swagger 是工具集OpenAPI 是规范。就像“Word”软件和“DOCX”格式的关系。❌ “SpringDoc 和 Swagger 是同一个东西”→ 不是。SpringDoc 是生成器Swagger 是展示和编辑工具。SpringDoc 内部会调用 Swagger UI。如果你还是觉得抽象只需要记住这个结论你在pom.xml里加的那个依赖作用是让 Spring Boot 项目自动生成一份符合 OpenAPI 规范的 API 文档并且自带一个 Swagger UI 界面来查看它。你不需要关心底层细节只需要知道它帮你省去了手写文档的工作。

更多文章