当前位置: 首页 > news >正文

SpringBoot 3 与 SpringDoc 打造完美接口文档

文章目录

    • 1. SpringDoc 简介
      • 1.1 SpringDoc 优势
    • 2. 环境准备
      • 2.1 Maven 依赖
      • 2.2 基础配置
    • 3. 创建基本文档配置类
    • 4. 控制器 API 文档注解
      • 4.1 基本控制器示例
      • 4.2 模型类示例
    • 5. 高级功能
      • 5.1 API分组
      • 5.2 安全配置
      • 5.3 隐藏特定端点
    • 6. 参数描述
      • 6.1 路径参数
      • 6.2 查询参数
      • 6.3 请求体
    • 7. 响应文档化
      • 7.1 基本响应
      • 7.2 详细响应内容
      • 7.3 自定义响应模型
    • 8. 访问文档
    • 9. 常见问题及最佳实践
      • 9.1 常见问题
      • 9.2 最佳实践
    • 10. 完整示例

1. SpringDoc 简介

SpringDoc 是一个开源工具,它集成了 OpenAPI 3 和 Swagger UI,可以自动为基于 Spring Boot 开发的 REST API 生成 API 文档。SpringDoc 替代了过去的 SpringFox,并提供了与 SpringBoot 3 更好的兼容性。

1.1 SpringDoc 优势

  • 支持 OpenAPI 3 规范
  • 与 SpringBoot 3 完美集成
  • 自动扫描并生成 API 文档
  • 支持丰富的注解来定制 API 文档
  • 提供 Swagger UI 进行文档可视化
  • 支持分组、安全配置等高级特性

2. 环境准备

2.1 Maven 依赖

在 SpringBoot 3 项目中添加 SpringDoc 依赖:

<dependency><groupId>org.springdoc</groupId><artifactId>springdoc-openapi-starter-webmvc-ui</artifactId><version>2.3.0</version>
</dependency>

对于 WebFlux 项目,使用:

<dependency><groupId>org.springdoc</groupId><artifactId>springdoc-openapi-starter-webflux-ui</artifactId><version>2.3.0</version>
</dependency>

2.2 基础配置

application.yml 中添加基础配置:

springdoc:api-docs:enabled: true                  # 启用/禁用API文档的访问path: /v3/api-docs            # 设置API文档的访问路径swagger-ui:path: /swagger-ui.html        # 设置Swagger UI的访问路径disable-swagger-default-url: truedisplay-request-duration: true # 显示请求持续时间packages-to-scan: com.example.controller # 指定要扫描的包paths-to-match: /api/**, /public/** # 指定要匹配的路径

3. 创建基本文档配置类

创建一个配置类来自定义 API 文档:

package com.example.config;import io.swagger.v3.oas.models.ExternalDocumentation;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Contact;
import io.swagger.v3.oas.models.info.Info;
import io.swagger.v3.oas.models.info.License;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class OpenApiConfig {@Beanpublic OpenAPI springShopOpenAPI() {return new OpenAPI().info(new Info().title("我的API文档").description("Spring Boot 3 应用接口文档").version("v1.0.0").contact(new Contact().name("开发者").email("developer@example.com").url("https://www.example.com")).license(new License().name("Apache 2.0").url("https://www.apache.org/licenses/LICENSE-2.0"))).externalDocs(new ExternalDocumentation().description("更多文档").url("https://springdoc.org"));}
}

4. 控制器 API 文档注解

4.1 基本控制器示例

package com.example.controller;import com.example.model.User;
import com.example.service.UserService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas

相关文章:

  • Centos9 离线安装 MYSQL8
  • Spring Boot集成MongoDB及实战技巧与性能调优
  • android framework开发的技能要求
  • 哈希表实现
  • 微前端框架 Wujie
  • python3GUI--仿网课答题播放器 By:PyQt5(分享)
  • System.out 详解
  • ts与面向对象
  • trivy开源安全漏洞扫描器——筑梦之路
  • 操作系统:进程是一个非常重要的抽象概念
  • QML 样式库
  • PySide6 GUI 学习笔记——常用类及控件使用方法(常用类尺寸QSizeF)
  • Java发生OOM是否必然导致JVM退出
  • 【工具变量】A股上市企业数据资产披露水平数据集(2000-2023年)
  • 8.QT-按钮类控件|Push Button|Radio Button|Check Box|Tool Button(C++)
  • 提交bug单时,应该说明哪些信息?
  • 强制重装及验证onnxruntime-gpu是否正确工作
  • 借助 OpenCV 和 PyTorch 库,利用卷积神经网络提取图像边缘特征
  • C++项目 —— 基于多设计模式下的同步异步日志系统(4)(双缓冲区异步任务处理器(AsyncLooper)设计)
  • HTTP 2.0 和 3.0 的区别
  • 云南洱源县4.8级地震:房屋受损442户,无人员伤亡报告
  • 更好发挥汽车产业在扩投资促消费方面的带动作用!陈吉宁调研上海车展
  • 小米首次参加上海车展:没有雷军依旧人气爆棚,YU7上市时间未推迟
  • 体坛联播|曼城击败维拉迎英超三连胜,巴萨遭遇魔鬼赛程
  • 叶辛秦文君进校园推广阅读
  • 几百元的工资优势已不能吸引人才流动,江苏多地探讨“抢人”高招