基于SpringBoot3从零配置SpringDoc

基于SpringBoot3从零配置SpringDoc

  • 一、SpringFox
  • 二、SpringDoc
  • 三、Open API 规范
  • 四、SpringBoot3配置Knife4j
    • 1.官方参考文档
    • 2.添加依赖
    • 3.添加配置项
    • 4.设置文档首页
    • 5.编写控制器
    • 6.文档展示

一、SpringFox

  • github SpringFox 已经停止更新了。
  • SpringFox 对 SpringBoot3.0 不适配,要使用必须降低 SpringBoo t版本。

二、SpringDoc

  • 参考文章 ===> 基于SpringBoot3从零配置SpringDoc

  • SpringDoc,它可简化 API 文档的生成和维护,这些文档基于 OpenAPI 3 规范,适用于 Spring Boot 3.x 应用程序。Spring Boot 3.x 要求使用 springdoc-openapi version 2 及以上。

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

三、Open API 规范

  • Open API 即开放 API,也称开放平台。 所谓的开放 API(OpenAPI)是服务型网站常见的一种应用,网站的服务商将自己的网站服务封装成一系列 API(Application Programming Interface,应用编程接口)开放出去,供第三方开发者使用,这种行为就叫做开放网站的 API,所开放的 API 就被称作 OpenAPI(开放 API )。
  • OpenAPI 规范官方文档
    • https://openapi.apifox.cn/

四、SpringBoot3配置Knife4j

  • Knife4j 是一个集 Swagger2 和 OpenAPI3 为一体的增强解决方案。Knife4j 相当于是对 SpringDoc UI 优化的一个组件。
  • Knife4j就是一个接口文档工具,可以看作是Swagger的升级版,但是界面比Swagger更好看,功能更丰富。

1.官方参考文档

  • Knife4j官方网站
    • https://doc.xiaominfo.com/
  • 官方文档(快速开始)
    • 快速开始
  • 官方文档(Knife4j版本参考)
    • Knife4j 版本参考

2.添加依赖

 <!-- 生成 API 接口文档的组件 --><dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId><version>4.4.0</version></dependency>

3.添加配置项

  • 官方文档(详细配置):
    • 3.1 增强模式
server.port: 8800  # 设置端口号
server:servlet:context-path: /test # 设置dispatcher访问的路径
springdoc:swagger-ui:path: /swagger-ui.htmltags-sorter: alphaoperations-sorter: alphaapi-docs:path: /v3/api-docsgroup-configs:- group: testpaths-to-match: '/**'# 生成文档所需的扫包路径,一般为启动类目录packages-to-scan: com.gdb.test
#knife4j 增强配置
knife4j:#是否启用增强设置enable: true#开启生产环境屏蔽production: false#是否启用登录认证basic:enable: trueusername: adminpassword: 123456setting:  # 前端UI的个性化配置属性language: zh_cn # 显示语言中文enable-version: trueenable-swagger-models: true # 是否显示界面中SwaggerModel功能swagger-model-name: SwaggerModel2  # 重命名SwaggerModel名称,默认enable-document-manage: true # 是否显示界面中"文档管理"功能

4.设置文档首页

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 Knife4jConfig {@Beanpublic OpenAPI myOpenAPI() {return new OpenAPI()// 接口文档标题.info(new Info().title("程序员API")// 接口文档简介.description("这是基于Knife4j OpenApi3的接口文档").termsOfService("https://blog.csdn.net/weixin_65032328?type=blog")// 接口文档版本.version("v1.0.0")// 接口文档协议.license(new License().name("许可协议").url("https://blog.csdn.net/weixin_65032328?type=blog"))// 开发者联系方式.contact(new Contact().name("迷人的小宝").email("dingbaogui8@gmail.com").url("https://blog.csdn.net/weixin_65032328?type=blog"))).externalDocs(new ExternalDocumentation().description("小宝945博客").url("https://blog.csdn.net/weixin_65032328?type=blog"));}
}

5.编写控制器

import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Parameters;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;@Tag(name = "项目首页", description = "用户首先访问的页面")
@RestController
public class HelloController {@Parameters ({  //详细说明每一个参数@Parameter(name = "name", description = "请求人姓名", required = true)})@Operation (summary = "简短描述", description = "更详细的描述")@PostMapping("/calldingbao")public String hello(String name){return name + "好啊,我是xiu宝哦!!!";}
}
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.enums.ParameterIn;
import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping("/user")
@Tag(name = "用户管理", description = "用户数据增删改查")
public class UserController {@Operation(summary = "根据ID,查询用户",parameters = {@Parameter(name = "id", description = "用户的唯一标识 id", required = true, in = ParameterIn.PATH)},responses = {@ApiResponse(responseCode = "200", description = "成功", content = @Content(mediaType = "application/json")),@ApiResponse(responseCode = "400", description = "错误", content = @Content(mediaType = "application/json"))})@GetMapping("/{id}")public Integer getUserById(@PathVariable int id) {return id;}
}

6.文档展示

  • 此时运行项目,例如:http://127.0.0.1:8080/test/doc.html
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/690347.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信小程序开发之Vant组件库

文章目录 环境Vant介绍示例 微信小程序的npm支持安装npm包构建npm 在微信小程序开发中使用Vant准备安装和配置一&#xff1a;安装二&#xff1a;修改app.json三&#xff1a;修改project.config.json四&#xff1a;构建npm包 使用Button组件Calendar组件 参考 环境 Windows 11 …

【开源】基于JAVA+Vue+SpringBoot的就医保险管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 科室档案模块2.2 医生档案模块2.3 预约挂号模块2.4 我的挂号模块 三、系统展示四、核心代码4.1 用户查询全部医生4.2 新增医生4.3 查询科室4.4 新增号源4.5 预约号源 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVue…

把Llama2封装为API服务并做一个互动网页

最近按照官方例子&#xff0c;把Llama2跑起来了测试通了&#xff0c;但是想封装成api服务&#xff0c;耗费了一些些力气 参考&#xff1a;https://github.com/facebookresearch/llama/pull/147/files 1. 准备的前提如下 按照官方如下命令&#xff0c;可以运行成功 torchrun -…

程序员怎么利用chatgpt提高效率

在当今这个数字化时代&#xff0c;AI 技术以各种形式融入到我们的生活和工作中&#xff0c;对于程序员而言&#xff0c;AI 可以成为他们的得力助手。特别是 OpenAI 的 ChatGPT&#xff0c;其深度学习模型在编程领域具有很大潜力。 首先&#xff0c;我们介绍一下 GitHub Copilo…

【Larry】英语学习笔记语法篇——非谓语动词和从句是一回事

目录 非谓语动词和从句是一回事 不定式&#xff1a;名词/形容词/副词 1、不定式 名词属性的不定式&#xff1a;作为主语、表语、宾语 形容词属性的不定式&#xff1a;作后置定语 副词属性的不定式&#xff1a;作状语 副词属性的不定式&#xff1a;作插入语 不定式的逻辑…

【CSS】display:flex和display: inline-flex区别

flex&#xff1a;将对象作为弹性伸缩盒显示 inline-flex&#xff1a;将对象作为内联块级弹性伸缩盒显示 DOM结构 <div class"main"><div></div><div></div><div></div><div></div></div>flex .main{…

HTML世界核心

目录 一、基本文档(Basic Documentation) 二、基本标签(Basic Tags) 三、文本格式化(Formatting) 四、链接(Links) 五、图片(Images) 六、样式/区块(Styles/Sections) 七、无序列表(Disorder List) 八、有序列表(Sequence List) 九、定义列表(Definin…

用户空间与内核通信(二)

文章&#xff1a;用户空间与内核通信&#xff08;一&#xff09;介绍了系统调用&#xff08;System Call&#xff09;&#xff0c;内核模块参数和sysfs&#xff0c;sysctl函数方式进行用户空间和内核空间的访问。本章节我将介绍使用netlink套接字和proc文件系统实现用户空间对内…

python入门----基础

这里写目录标题 重点虚拟环境/与//的区别/// 关于print字符串可以用号拼接单双引号转义符换行三引号 变量变量的定义变量名的命名 API库导库以及使用 注释单行注释多行注释 数据类型strboolNoneTypetype函数 交互模式介绍开启 input作用延伸 if-else条件嵌套语句逻辑运算符内容…

信号系统之窗口正弦滤波器

1 Windowed-Sinc 的策略 图 16-1 说明了 windowed-sinc 滤波器背后的思想。在**(a)**中&#xff0c;显示了理想低通滤波器的频率响应。所有低于截止频率 f c f_c fc​ 的频率都以单位振幅通过&#xff0c;而所有较高的频率都被阻挡。通带是完全平坦的&#xff0c;阻带中的衰减…

代码随想录算法训练营第三六天 | 无重叠区间、划分字母区间、合并区间

目录 无重叠区间划分字母区间合并区间 LeetCode 435. 无重叠区间 LeetCode 763.划分字母区间 LeetCode 56. 合并区间 无重叠区间 给定一个区间的集合 intervals &#xff0c;其中 intervals[i] [starti, endi] 。返回 需要移除区间的最小数量&#xff0c;使剩余区间互不重叠…

【linux】体系结构和os管理

冯诺依曼体系结构 输入单元&#xff1a;包括键盘, 鼠标&#xff0c;扫描仪, 写板等 中央处理器(CPU)&#xff1a;含有运算器和控制器等 输出单元&#xff1a;显示器&#xff0c;打印机等 这里的存储器指的是内存 三者是相互连接的&#xff0c;设备之间会进行数据的来回拷贝&am…

STM32F1 - I2C读写EEPROM

Inter-integrated circuit 1> 实验概述2> I2C模块 - 硬件方框图3> I2C模块 - 主发送器模式4> I2C模块 - 主接收器模式 1> 实验概述 通过STM32F103内部I2C硬件模块&#xff0c; 读写EEPROM - AT24C02 2> I2C模块 - 硬件方框图 3> I2C模块 - 主发送器模式 4…

GPT-4助力我们突破思维定势

GPT-4在突破思维局限、激发灵感和促进知识交叉融合方面的作用不可小觑&#xff0c;它正逐渐成为一种有力的工具&#xff0c;助力各行业和研究领域的创新与发展。 GPT-4在突破传统思维模式、拓宽创新视野和促进跨学科知识融合方面扮演着越来越重要的角色&#xff1a; 突破思维…

java 数据结构LinkedList类

目录 什么是LinkedList 链表的概念及结构 链表的结构 无头单向非循环链表 addFirst方法&#xff08;头插法&#xff09; addLast方法&#xff08;尾插法&#xff09; addIndex方法 contains方法 removeAllKey方法 size和clear方法 链表oj题 无头双向非循环链表 ad…

Paper - 使用 CombFold 组合装配实现大型蛋白质复合物的结构预测

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/136170304 CombFold: predicting structures of large protein assemblies using a combinatorial assembly algorithm and AlphaFold2 CombFold…

大公司为什么禁止SpringBoot项目使用Tomcat?

原作者&#xff1a;老杨 原文PDF链接&#xff1a;https://topjavaer.cn/advance/excellent-article/28-springboot-forbid-tomcat.html 前言 在SpringBoot框架中&#xff0c;我们使用最多的是Tomcat&#xff0c;这是SpringBoot默认的容器技术&#xff0c;而且是内嵌式的Tomcat…

ClickHouse监控及备份

第1章 ClickHouse监控概述 第2章 Prometheus&Grafana的安装 第3章 ClickHouse配置 第4章 Grafana集成Prometheus 第5章 备份及恢复

【C语言】位操作符与移位操作符练习

目录 前言&#xff1a; 1.一道变态的面试题 2.输入一个整数 n &#xff0c;输出该数32位二进制表示中1的个数。其中负数用补码表示。 方法一&#xff1a; 方法二&#xff1a; 方法三&#xff1a; 3.打印整数二进制的奇数位和偶数位 前言&#xff1a; 前篇我们学习过C语言…

【开源】JAVA+Vue.js实现城市桥梁道路管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示四、核心代码4.1 查询城市桥梁4.2 新增城市桥梁4.3 编辑城市桥梁4.4 删除城市桥梁4.5 查询单个城市桥梁 五、免责说明 一、摘要 1.1 项目介绍 基于VueSpringBootMySQL的城市桥梁道路管理系统&#xff0c;支持…