Spring Boot 2.7.5 整合 Swagger 3 实现可交互的后端接口文档

201JavaSpringBoot2.7.5v1 一、入门 一、依赖 继承父工程spring-boot-starter-parent(必要) spring-boot-starter-web(必要) spring-boot-starter-test(可选) <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instanc 阅读详情

前言

问: 什么是 OpenAPI?

答: OpenAPI 规范(OAS),是定义一个标准的、与具体编程语言无关的RESTful API的规范。OpenAPI 规范使得人类和计算机都能在“不接触任何程序源代码和文档、不监控网络通信”的情况下理解一个服务的作用。

问: 什么是 Swagger?

答: Swagger 是一组围绕 OpenAPI 规范构建的开源工具,可以帮助您设计、构建、记录和使用 REST API。

主要的Swagger工具包括:

  • Swagger Editor: 基于浏览器的编辑器,可以在其中编写 OpenAPI 定义。
  • Swagger UI: 将 OpenAPI 定义呈现为交互式文档。
  • Swagger Codegen: 从 OpenAPI 定义生成调用代码。
  • Swagger Editor Next (beta): 基于浏览器的编辑器,您可以在其中编写和查看 OpenAPI 和 AsyncAPI 定义。
  • Swagger Core: 用于创建、使用和使用 OpenAPI 定义的 Java 相关库。
  • Swagger Parser: 用于解析 OpenAPI 定义的独立库
  • Swagger APIDom: 提供单一的统一结构,用于跨各种描述语言和序列化格式描述 API。

集成

  1. 初始 Spring Boot 项目
  2. pom.xml 引入依赖
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-boot-starter</artifactId>
        <version>3.0.0</version>
    </dependency>
    
  3. 编写 SwaggerConfig 配置类
    package com.example.demo.config;
    
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import springfox.documentation.builders.RequestHandlerSelectors;
    import springfox.documentation.oas.annotations.EnableOpenApi;
    import springfox.documentation.service.ApiInfo;
    import springfox.documentation.service.Contact;
    import springfox.documentation.spi.DocumentationType;
    import springfox.documentation.spring.web.plugins.Docket;
    
    import java.util.ArrayList;
    
    /**
    * @Author: 高建伟
    * @Date: 2022/11/22
    * @Description: SwaggerConfig
    */
    @Configuration
    @EnableOpenApi
    public class SwaggerConfig {
    
        /**
        * 用于读取配置文件 application.properties 中 swagger 属性是否开启
        */
        @Value("${swagger.enabled}")
        private Boolean swaggerEnabled;
    
        @Bean
        public Docket docket() {
            return new Docket(DocumentationType.OAS_30)
                    .apiInfo(apiInfo())
                    // 是否开启swagger
                    .enable(swaggerEnabled)
                    .select()
                    // 过滤条件,扫描指定路径下的文件
                    .apis(RequestHandlerSelectors.basePackage("com.example.demo.controller"))
                    // 指定路径处理,PathSelectors.any()代表不过滤任何路径
                    //.paths(PathSelectors.any())
                    .build();
        }
    
        private ApiInfo apiInfo() {
            /*作者信息*/
            Contact contact = new Contact("高建伟", "https://blog.youkuaiyun.com/Gjw_java?type=blog", "jianweigao19@163.com");
            return new ApiInfo(
                    "Spring Boot 集成 Swagger3 测试",
                    "Spring Boot 集成 Swagger3 测试接口文档",
                    "v1.0",
                    "https://blog.youkuaiyun.com/Gjw_java?type=blog",
                    contact,
                    "Apache 2.0",
                    "http://www.apache.org/licenses/LICENSE-2.0",
                    new ArrayList()
            );
        }
    }
    
    
  4. 控制器中使用
    package com.example.demo.controller;
    
    import com.example.demo.entity.TestDict;
    import io.swagger.annotations.Api;
    import io.swagger.annotations.ApiOperation;
    import io.swagger.annotations.ApiParam;
    import org.springframework.web.bind.annotation.*;
    
    /**
    * @Author: 高建伟
    * @Date: 2022/11/22
    * @Description:
    */
    @RestController
    @RequestMapping("/test")
    @Api(tags = "测试控制器")
    public class TestController {
    
        @ApiOperation("测试接口")
        @GetMapping("/hello")
        public String hello(){
            return "Hello world";
        }
    
        @ApiOperation("保存测试字典接口")
        @PostMapping("/saveDict")
        public String saveDict(@ApiParam(value = "id", required = true, example = "123456") @RequestBody TestDict testDict){
            return testDict.toString();
        }
    }
    
  5. 实体中使用
    package com.example.demo.entity;
    
    import io.swagger.annotations.ApiModel;
    import io.swagger.annotations.ApiModelProperty;
    import lombok.AllArgsConstructor;
    import lombok.Data;
    import lombok.NoArgsConstructor;
    
    /**
    * @Author: 高建伟
    * @Date: 2022/11/22
    * @Description:
    */
    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    @ApiModel("测试字典类")
    public class TestDict {
    
        @ApiModelProperty("主键")
        private String id;
        @ApiModelProperty("字典类型")
        private String dictType;
        @ApiModelProperty("字典值")
        private String dictValue;
        @ApiModelProperty("字典key")
        private String dictKey;
        @ApiModelProperty("备注")
        private String remark;
    }
    

访问

访问地址:http://localhost:8080/swagger-ui/index.html

swagger3_run_image

代码

点击获取测试代码

参考文献

Swagger 3.0 官方文档

SpringBoot项目配置Swagger 阅读详情

相关推荐

JavaWeb前端/后端开发规范——接口文档概述及YApi平台的使用

JavaWeb前端/后端开发规范——接口文档概述及YApi平台的使用

快乐学习,daydayup! 1449

【springboot2.7.5整合swagger3.0.0】

其中,springboot与swagger的版本对应关系见。也可以采用注解的方式实现。配置时注意版本冲突问题。附:可能出现的其他问题。

weixin_44032244的博客 1093

Spring Boot整合Swagger3(OpenAPI3)生成接口文档

都说好记性不如烂笔头,每天写一点,从量变到质变的开始!废话不多说,以下所有内容均来自本人实际操作: 1.为什么使用Swagger3(OpenAPI3)? swagger官方文档介绍的功能太过复杂,作为一个后端开发,我们往往只需要用它来自动生成接口文档,而Swagger2早就不维护了,因此通过这篇博客找到了springdoc官网 springdoc-openapi Java库有助于使用Spring Boot项目自动生成API文档.springdoc-openapi的工作原理是在运行时检查应用程序,以基于

weixin_42759726的博客 9385

【springboot2.7.5整合swagger3.0.0版本冲突问题】

解决办法:修改至对应版本。附上各版本间的对应关系。

weixin_44032244的博客 329

Spring Boot-集成Swagger

再通过Swagger衍生出来的一系列项目和工具,就可以做到生成各种格式的接口文档,生成多种语言的客户端和服务端的代码,以及。

2401_86984462的博客 3102

ADS中HB仿真自动优化报错问题解决心得

在ADS HB仿真中自动优化出现报错被强制暂停,解决方法如下

yyyyyyyyyyjy的博客 6535

Spring-Boot + Swagger2 自动生成API接口文档

spring-boot作为当前最为流行的Java web开发脚手架,相信越来越多的开发者会使用其来构建企业级的RESTFul API接口。这些接口不但会服务于传统的web端(b/s),也会服务于移动端。

阿芒的博客 2万+

简单概述人形机器人的“大脑、小脑”

原创 仲翔云人形机器人产业通2024年09月13日 19:41上海人形机器人的大脑和小脑是其控制系统的关键组成部分,它们模拟了人类大脑和小脑的功能,以实现复杂的运动控制和决策过程。

AI生成曾小健3 2069

Swagger技术(swagger2/swagger3/knife4j)

Swagger(接口文档实时动态生成工具 一、Swagger 简介出现背景Open APISwagger 简介二、Springfox三、Swagger 用法1.编写SpringBoot 项目2 导入Spring-fox 依赖3.启动类添加注解`@EnableSwagger2`4.访问UI页面`入http://ip:port/swagger-ui.html`四、Swagger-UI 使用五、Sw...

时间静止 1万+

Android音频子系统分析-car_audio_configuration.xml

先附上一个例子,再逐一解释。概括来说,该文件描述了车里有哪些区域,每个区域划分了多少组,每个组包含了哪些设备,每个设备接收哪些类型的音频流。

不定时记录分享一些有用没用的东西 988

Spring Boot2集成Swagger框架

发现了痛点就要去找解决方案。解决方案用的人多了,就成了标准的规范,这就是Swagger的由来。通过这套规范,你只需要按照它的规范去定义接口及接口相关的信息。再通过Swagger衍生出来的一系列项目和工具,就可以做到生成各种格式的接口文档,生成多种语言的客户端和服务端的代码,以及在线接口调试页面等等。这样,如果按照新的开发模式,在开发新版本或者迭代版本的时候,只需要更新Swagger描述文件,就可以自动生成接口文档和客户端服务端代码,做到调用端代码、服务端代码以及接口文档的一致性。

username00000的博客 1844

Openclaw错误排查及解决方案之:Previous run is still shutting down. Please try again in a moment.

Openclaw错误排查及解决方案之:Previous run is still shutting down. Please try again in a moment.

多媒体编程、网络编程、系统编程、网络安全编程、驱动编程 232

Spring Boot 3.x 整合 Swagger(springdoc-openapi)实现接口文档

本文介绍了在Spring Boot 3.x中使用springdoc-openapi实现Swagger接口文档的方法。主要内容包括:版本兼容性对照表(3.0-3.2推荐2.5.x,3.3/3.4需等待2.6.x)、Maven依赖配置示例、最小化项目结构说明、访问路径说明以及常见错误解决方案。特别提醒Spring Boot 3.3+与springdoc 2.5.x存在兼容性问题,生产环境应选用稳定版本组合。文章提供了完整的配置示例和问题排查指南,帮助开发者快速集成Swagger文档功能。

weixin_45919016的博客 1657

OpenClaw 从新手到中级完整教程【完整 持续更新版】

OpenClaw(曾用名 ClawdBot/Moltbot)是 2026 年最火的开源 AI Agent 项目,GitHub 已获得超过 68,000 星标。它不是普通的聊天机器人,而是一个真正能够执行任务的个人 AI 助理。

FeelTouch Labs 3113

【WRFDA教程第一期】运行观测预处理程序(OBSPROC)

运行观测预处理程序(OBSPROC)

WW、forever的博客 1891

揭秘Spring Boot与Swagger3集成全流程:5步实现接口文档自动化生成

轻松实现API文档自动化,详解Spring Boot集成Swagger3接口文档全流程。涵盖配置步骤、注解使用与常见问题解决方案,适用于前后端分离项目,提升开发效率。5步完成文档生成,值得收藏。

BytePulse的博客 1055

jsqlparser 版本不兼容:net.sf.jsqlparser.statement.select.SelectItem 以及 select.SelectBody 解决方法

看Bug直接定位到最后面的错误提示,一开始以为是UnabletostartembeddedTomcat的基本错误,后续发现排查方向错误!问题比较复杂,不过这类问题可看:出现WebServerException:UnabletostartembeddedTomcat解决方法(全)

码农研究僧的博客 2672

【SpringBoot整合系列】SpringBoot3.x整合Swagger

那么问题来了,随着代码的不断更新,开发人员在开发新的接口或者更新旧的接口后,由于开发任务的 繁重,往往文档很难持续跟着更新,Swagger 就是用来解决该问题的一款重要的工具,对使用接口的人 来说,开发人员不需要给他们提供文档,只要告诉他们一个 Swagger 地址,即可展示在线的 API 接口 文档,除此之外,调用接口的人员还可以在线测试接口数据,同样地,开发人员在开发接口时,同样也 可以利用 Swagger 在线接口文档测试接口数据,这给开发人员提供了便利。进行方法返回对象的说明。

m0_74825003的博客 3220

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

全新Swagger3.0教程,OAS3快速配置指南,实现API接口文档自动化!

1、前言 ①在前后端分离开发中,一般需要构建一份API文档来描述所有接口信息,文档工作量巨大,需要包含接口地址、请求参数以及返回值等,且维护不方便,一旦接口发生变化就需要修改文档。 ②Swagger的出现可以帮助开发人员设计、构建、记录是使用RESTFul Web服务,将代码和文档融为一体,可以完美解决上述问题,将开发人员的精力集中到业务中,而不是繁琐的文档。 ③网上很多Swagger教程均基于Swagger2,现均已过时,而本文将带来全新Swagger3.0教程,以最简单的方式实现Swagger3(

m0_59562547的博客 1万+

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

SpringBoot 2.x 整合Swagger2 生成接口文档

认真是一种态度,坚持是一种品格,优秀是一种习惯!     随着技术的不断革新,目前大多数互联网公司引进了前后端分离的开发模式。前端负责页面的开发,包括页面样式以及相关接口对接;而后端则专注于后台业务的实现。这样确实极大的提高了开发效率。但同时也带了沟通上的问题,因为接口都是后台实现和提供的。那么就必须写好相应的接口文档,告知前端接口地址、接口参数规范等等。因此我们引入了swagger一个为接口文档而生的开源项目,它以注解的方式,让后端在开发过程中就可以通过简单便捷的.

u013317848的博客 1444

Spring Boot整合Swagger 2

Spring Boot整合Swagger 2

探索er的博客 887

Spring Boot——整合swagger

SpringBoot整合swagger

m0_47360542的博客 1587

swagger2 与 springmvc 整合 生成接口文档

简介 Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。Swagger 让部署管理和使用功能强大的API从未如此简单。 我们的RESTful API就有可能要面对多个开发人员或多个开发团队:IOS开发、Andro

AndyBao 7268

Spring Boot 3 整合 Swagger OpenAPI:优雅生成项目API接口文档

Spring Boot 3 是一个功能强大、灵活且易于使用的框架,它带来了许多令人激动的特性和改进。Java 17 支持:Spring Boot 3 全面支持 Java 17,使开发人员能够利用最新的 Java 特性和性能改进。模块化支持:Spring Boot 3 引入了对 Java 模块化的支持,使应用程序的架构更加模块化、可维护性更强。响应式编程:Spring Boot 3 提供了对响应式编程的支持,通过响应式流和异步编程模型,提高应用程序的性能和可伸缩性。

码小呆的博客 3691
上一篇: 最简洁网站 SEO 优化,Lighthouse SEO 评分 92
下一篇: Windows 11 使用 MySQL 官方压缩包手动安装
高建伟-joe
博客等级 码龄6年 155粉丝 56原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

高建伟-joe

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值