发布时间:2026/8/7 11:22:35
第29篇-SpringDoc-OpenAPI3-API文档 【Kotlin Spring Boot 4 从零到架构师】第 29 篇SpringDoc OpenAPI 3 — API 文档本系列定位零基础入门从 Kotlin 语法一路到 Spring Boot 4 高级架构DDD Modulith适合 Java 开发者转型也适合纯新手系统学习。本篇你将学到SpringDoc OpenAPI 3 的集成与配置Tag/Operation/Schema/Parameter注解在 Swagger UI 中测试 API按模块分组 API 文档生产环境关闭文档学完本篇mini-shop 将拥有一份专业、可交互的 API 文档前后端联调效率倍增。一、SpringDoc vs SpringFox维度SpringFoxSwagger 2SpringDocOpenAPI 3规范Swagger 2.0OpenAPI 3.1Spring Boot 4 支持❌ 已停止维护✅ 官方推荐启动速度慢扫描全部类快配置复杂度高低结论Spring Boot 4 必须用 SpringDocSpringFox 已被淘汰。下面是 SpringDoc 与 SpringFox 的选型决策流程Spring Boot 3.x / 4.xSpring Boot 2.x是否项目启动Spring Boot 版本推荐 SpringDoc是否愿意升级继续使用 SpringFox不推荐添加 springdoc-openapi 依赖配置 application.yml享受 OpenAPI 3 的自动文档二、集成 SpringDoc2.1 添加依赖dependencies{implementation(org.springdoc:springdoc-openapi-starter-webmvc-ui:2.6.0)}2.2 配置# application.ymlspringdoc:api-docs:path:/v3/api-docs# API 文档 JSON 路径swagger-ui:path:/swagger-ui.html# Swagger UI 页面路径operationsSorter:method# 接口按 HTTP 方法排序tagsSorter:alpha# 标签按字母排序packages-to-scan:com.example.minishop# 扫描包default-produces-media-type:application/json2.3 访问 Swagger UI启动项目后浏览器访问http://localhost:8080/swagger-ui.html你就能看到自动生成的 API 文档页面包含所有 Controller 的接口信息并且可以直接在页面上测试。下面是用户通过 Swagger UI 调用 API 的完整时序数据库Spring Boot 应用Swagger UI开发者/前端数据库Spring Boot 应用Swagger UI开发者/前端1. 访问 /swagger-ui.html2. 请求 /v3/api-docs3. 返回 OpenAPI JSON4. 渲染 API 文档页面5. 填写参数并点击 Try it out6. 发送 HTTP 请求7. 执行数据库操作8. 返回数据9. 返回响应 JSON10. 展示响应结果三、注解增强文档3.1 全局信息配置packagecom.example.minishop.configimportio.swagger.v3.oas.models.OpenAPIimportio.swagger.v3.oas.models.info.Contactimportio.swagger.v3.oas.models.info.Infoimportio.swagger.v3.oas.models.info.Licenseimportorg.springframework.context.annotation.Beanimportorg.springframework.context.annotation.ConfigurationConfigurationclassOpenApiConfig{BeanfuncustomOpenAPI():OpenAPI{returnOpenAPI().info(Info().title(Mini-Shop API 文档).version(1.0.0).description(极简电商系统 RESTful API 接口文档).contact(Contact().name(Mini-Shop Team)))}}3.2 Controller 注解RestControllerRequestMapping(/api/products)Tag(name商品管理,description商品的增删改查接口)// ← 分组标签classProductController(privatevalproductService:ProductService){Operation(summary查询单个商品,// ← 接口摘要description根据商品 ID 查询商品详细信息// ← 详细描述)ApiResponses(ApiResponse(responseCode200,description查询成功),ApiResponse(responseCode404,description商品不存在))GetMapping(/{id})fungetById(Parameter(description商品 ID,requiredtrue)// ← 参数说明PathVariableid:Long):ApiResponseProductResponse{returnApiResponse.success(productService.findById(id))}Operation(summary创建商品)PostMappingResponseStatus(HttpStatus.CREATED)funcreate(RequestBodyValidrequest:CreateProductRequest):ApiResponseProductResponse{returnApiResponse.success(productService.create(request))}}3.3 DTO 注解Schema(description创建商品请求)dataclassCreateProductRequest(Schema(description商品名称,example机械键盘,requiredtrue)field:NotBlank(message商品名称不能为空)valname:String,Schema(description商品价格,example299.00,requiredtrue)field:DecimalMin(value0.01,message价格必须大于 0)valprice:BigDecimal,Schema(description库存数量,example50,requiredtrue)field:Min(0)valstock:Int,Schema(description商品分类,example外设,requiredtrue)field:NotBlankvalcategory:String)Schema(description商品响应)dataclassProductResponse(Schema(description商品 ID,example1)valid:Long,Schema(description商品名称,example机械键盘)valname:String,Schema(description商品价格,example299.00)valprice:BigDecimal,Schema(description库存数量,example50)valstock:Int,Schema(description是否有库存,exampletrue)valinStock:Boolean)下面是 Controller、Service、DTO 之间的协作关系调用返回接收返回使用ProductControllergetById(id: Long) : ApiResponsecreate(request: CreateProductRequest) : ApiResponseProductServicefindById(id: Long) : ProductResponsecreate(request: CreateProductRequest) : ProductResponseCreateProductRequestString nameBigDecimal priceint stockString categoryProductResponseLong idString nameBigDecimal priceint stockboolean inStockApiResponseTint codeString messageT data四、生产环境关闭文档API 文档不应在生产环境暴露。用 Spring Profile 控制# application-prod.ymlspringdoc:api-docs:enabled:false# 关闭 API 文档swagger-ui:enabled:false# 关闭 Swagger UI或者用Profile注解BeanProfile(!prod)// 非 prod 环境才生效funcustomOpenAPI():OpenAPI{...}五、本篇小结知识点核心内容SpringDocOpenAPI 3 实现Spring Boot 4 推荐springdoc-openapi-starter-webmvc-ui一行依赖集成 Swagger UITagController 分组标签Operation接口摘要和描述SchemaDTO 字段说明和示例值Parameter路径/查询参数说明ApiResponses响应状态码说明生产关闭springdoc.api-docs.enabled: false模块四总结恭喜完成 Web 深入模块篇主题核心收获24全局异常处理RestControllerAdvice、统一 ErrorResponse25统一响应格式ApiResponseTPageResponseT26DTO 设计模式请求/响应分离、扩展函数映射、copy() 部分更新27拦截器与过滤器日志统计、权限校验、请求 ID28CORS 与文件上传全局跨域配置、MultipartFile 上传29SpringDoc OpenAPI可交互 API 文档mini-shop 现在具备了生产级 Web 应用的全部要素✅ 统一异常处理 统一响应格式 ✅ 完善的 DTO 设计 ✅ 请求日志 耗时统计 ✅ CORS 跨域支持 ✅ 文件上传商品图片 ✅ API 文档Swagger UI下篇预告第 30 篇Spring Security 7 核心概念认证和授权有什么区别FilterChain 怎么工作下一篇进入安全认证模块为 mini-shop 添加用户登录和权限控制。如果本篇内容对你有帮助欢迎点赞收藏有任何疑问欢迎在评论区交流。

相关新闻

2026/8/7 11:22:35

第28篇-CORS与文件上传

【Kotlin Spring Boot 4 从零到架构师】第 28 篇:CORS 与文件上传 本系列定位:零基础入门,从 Kotlin 语法一路到 Spring Boot 4 高级架构(DDD Modulith),适合 Java 开发者转型,也适合纯新手系…

2026/8/7 11:22:35

做小程序商城多少钱?年费、页面设计、交易功能和长期维护拆解

做小程序商城多少钱?年费、页面设计、交易功能和长期维护拆解企业问做小程序商城多少钱,已经不能只看一个首年报价。商城费用要拆成年费版本、页面定制设计、交易功能、支付配置、会员营销、配送/自提/核销、售后培训、续费维护和可能的定制开发成本。很…

2026/8/7 12:22:38

信息收集方法论与高效技巧全解析

1. 信息收集概述 信息收集是任何项目或研究的基础环节,就像盖房子前需要准备砖瓦水泥一样。我做了十多年技术项目,发现80%的失败案例都源于前期信息收集不充分。无论是商业决策、技术研发还是日常问题解决,掌握系统化的信息收集方法都能让你事…

2026/8/7 12:22:38

终极Excel转CSV解决方案:3分钟掌握xlsx2csv高效数据处理

终极Excel转CSV解决方案:3分钟掌握xlsx2csv高效数据处理 【免费下载链接】xlsx2csv Convert xslx to csv, it is fast, and works for huge xlsx files 项目地址: https://gitcode.com/gh_mirrors/xl/xlsx2csv 在处理数据分析、数据迁移或系统集成时&#xf…

2026/8/7 12:22:38

Unity游戏开发配置管理革命:Luban自动化方案全解析

1. 项目概述:为什么我们需要新的配置管理方案?在Unity游戏开发中,配置表管理一直是个“痛并快乐着”的环节。快乐在于,用Excel管理游戏数据(比如角色属性、道具信息、关卡配置)对策划同学来说,直…

2026/8/7 12:22:38

从LLM到智能体:构建目标驱动AI系统的工程全景与实践指南

1. 从“聊天”到“做事”:AI工程范式的根本性转变 最近和不少同行交流,发现一个挺有意思的现象:大家聊起大语言模型,已经从最初的“它能写诗吗?”、“代码生成准不准”,逐渐转向了“怎么让它帮我自动处理周…

2026/8/7 12:17:37

CYW43012蓝牙开发实战:从ModusToolbox环境搭建到OTA量产全解析

1. 项目概述:为什么选择CYW43012模块? 如果你正在寻找一款集成了Wi-Fi和蓝牙功能,且功耗、成本、集成度都相对平衡的无线通信模块,那么赛普拉斯(现英飞凌)的CYW43012绝对是一个绕不开的选项。我最近在一个物…

2026/8/5 3:13:11

如何用免费工具突破游戏窗口限制:SRWE完整使用指南

如何用免费工具突破游戏窗口限制:SRWE完整使用指南 【免费下载链接】SRWE Simple Runtime Window Editor 项目地址: https://gitcode.com/gh_mirrors/sr/SRWE 你是否遇到过这样的困扰?想为心爱的游戏截图,却发现游戏不支持自定义分辨率…

2026/8/7 0:01:55

CAD图库管理:从文件归档到设计资产管理的效率革命

你肯定遇到过这种情况:打开一个老项目,想找某个特定的图块——比如一个标准的门、一个特定的设备符号,或者一个公司logo。你记得它就在某个DWG文件里,或者曾经从某个同事那里拷来过。于是,你开始在一堆命名混乱的文件夹…

2026/8/7 0:01:55

5分钟掌握Wand-Enhancer:2026年终极WeMod专业版免费解锁指南

5分钟掌握Wand-Enhancer:2026年终极WeMod专业版免费解锁指南 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/GitHub_Trending/we/Wand-Enhancer Wand-Enhancer是一款功能强…

2026/8/7 0:01:55

“Quality Control(质量控制)”在软件工程中通常指通过一系列活动确保软件产品符合预定的质量标准和用户需求

“Quality Control(质量控制)”在软件工程中通常指通过一系列活动确保软件产品符合预定的质量标准和用户需求。而“软件测试”是质量控制的关键手段之一,属于QC范畴下的具体实践,其目标是发现缺陷、验证功能正确性、评估软件质量属…

2026/8/7 9:44:18

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/5 19:21:13

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/6 20:45:01

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…