Swagger(丝袜哥)3.0 官方 Starter 终于出了,真的香吗?!

Dubbo集成Knife4j (Swagger 生成doc.html) Apache Dubbo™ 是一款高性能Java RPC框架。Apache Dubbo Spring Boot Project使得使用Dubbo作为RPC框架轻松创建Spring Boot应用程序。Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法、参数和模型紧密集成到服务器端的代码,允许 API 来始终保持同步。Swagger 让部署管理和使用功能强大的 API 从未如此简单。 阅读详情

点击上方“芋道源码”,选择“设为星标”

管她前浪,还是后浪?

能浪的浪,才是好浪!

每天 8:55 更新文章,每天掉亿点点头发...

源码精品专栏

 

摘要: 原创出处 http://www.iocoder.cn/Spring-Boot/Swagger-Starter/ 「芋道源码」欢迎转载,保留摘要,谢谢!

  • 1. 概述

  • 2. 快速体验

  • 3. 自定义配置

  • 4. 自定义 Starter

  • 666. 彩蛋


1. 概述

周末,不讲武德的狗芳跟我说,Swagger 官方 Starter 出来了,可以自动配置,真的香!

我拍了拍他的????头,这都出来四个月了,哥一早就体验过,并没有想象中的好用。

SpringFox 3.0.0 发布

狗芳表示不服,为什么不好用?

我又拍了拍他的????头,虽然提供了自动配置的功能,但是并未提供常用的配置项。

友情提示:对 Swagger 不了解的胖友,可以阅读下我写的《芋道 Spring Boot API 接口文档 Swagger 入门》文章,好看到爆炸~

2. 快速体验

我们先来快速体验下 Swagger 官方 Starter,体验下其提供的自动配置的功能。

新建一个示例项目,最终代码会如下图:

示例项目

良心艿:完整的代码,胖友可以访问 https://github.com/YunaiV/SpringBoot-Labs/tree/master/lab-24/lab-24-apidoc-swagger 地址。

嘿嘿~给个 star 噢!

2.1 引入依赖

在 pom.xml 文件中,引入 springfox-boot-starter 的依赖。

<?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-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.11.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>lab-24-apidoc-swagger-starter</artifactId>

    <dependencies>
        <!-- 实现对 Spring MVC 的自动配置 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!-- 实现对 Swagger 的自动配置 -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-boot-starter</artifactId>
            <version>3.0.0</version>
        </dependency>
    </dependencies>

</project>

注意,最低支持使用 SpringBoot 版本为 2.2+ 。

版本差异:是否使用 Starter 的依赖对比如下:

依赖对比

2.2 示例代码

下面,我们来编写用于展示 Swagger 功能的示例代码,和是否使用 Starter 并没有任何差别。

① 创建 UserController 类,添加相应的 Swagger 注解。代码如下:

@RestController
@RequestMapping("/users")
@Api(tags = "用户 API 接口")
public class UserController {

    @GetMapping("/list")
    @ApiOperation(value = "查询用户列表", notes = "目前仅仅是作为测试,所以返回用户全列表")
    public List<UserVO> list() {
        // 查询列表
        List<UserVO> result = new ArrayList<>();
        result.add(new UserVO().setId(1).setUsername("yudaoyuanma"));
        result.add(new UserVO().setId(2).setUsername("woshiyutou"));
        result.add(new UserVO().setId(3).setUsername("chifanshuijiao"));
        // 返回列表
        return result;
    }

    @GetMapping("/get")
    @ApiOperation("获得指定用户编号的用户")
    @ApiImplicitParam(name = "id", value = "用户编号", paramType = "query", dataTypeClass = Integer.class, required = true, example = "1024")
    public UserVO get(@RequestParam("id") Integer id) {
        // 查询并返回用户
        return new UserVO().setId(id).setUsername(UUID.randomUUID().toString());
    }

    @PostMapping("add")
    @ApiOperation("添加用户")
    public Integer add(UserAddDTO addDTO) {
        // 插入用户记录,返回编号
        Integer returnId = UUID.randomUUID().hashCode();
        // 返回用户编号
        return returnId;
    }

    @PostMapping("/update")
    @ApiOperation("更新指定用户编号的用户")
    public Boolean update(UserUpdateDTO updateDTO) {
        // 更新用户记录
        Boolean success = true;
        // 返回更新是否成功
        return success;
    }

    @PostMapping("/delete")
    @ApiOperation(value = "删除指定用户编号的用户")
    @ApiImplicitParam(name = "id", value = "用户编号", paramType = "query", dataTypeClass = Integer.class, required = true, example = "1024")
    public Boolean delete(@RequestParam("id") Integer id) {
        // 删除用户记录
        Boolean success = false;
        // 返回是否更新成功
        return success;
    }

}
  • UserAddDTO

  • UserUpdateDTO

  • UserVO

② 创建 Application 类,用于 SpringBoot 应用的启动。代码如下:

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}

2.3 简单测试

一切准备就绪,执行 Application 启动 SpringBoot 应用。

使用浏览器,访问 http://127.0.0.1:8080/swagger-ui/ 地址,进入 Swagger UI 界面。如下图所示:

版本差异:新版本的 Swagger UI 界面的地址,是 /swagger-ui/,而不是老版本的 /swagger-ui.html。

Swagger UI 界面

如此,我们已经完成了 Swagger 的快速集成与体验,还是非常方便。

3. 自定义配置

当我们想进行 Swagger 接口文档的自定义时,例如说修改 title 标题、description 描述等等信息时,却发现官方 Starter 并未提供对应的配置项。如下图所示:

配置项

这就导致,我们不得不创建 Configuration 类,进行自定义配置。下面,我们来演示下。

3.1 SwaggerConfiguration

创建 SwaggerConfiguration 类,设置自定义的 title 标题、description 描述等等信息。代码如下:

@Configuration
// @EnableSwagger2 无需使用该注解
public class SwaggerConfiguration {

    @Bean
    public Docket createRestApi() {
        // 创建 Docket 对象
        return new Docket(DocumentationType.SWAGGER_2) // 文档类型,使用 Swagger2
                .apiInfo(this.apiInfo()) // 设置 API 信息
                // 扫描 Controller 包路径,获得 API 接口
                .select()
                .apis(RequestHandlerSelectors.basePackage("cn.iocoder.springboot.lab24.controller"))
                .paths(PathSelectors.any())
                // 构建出 Docket 对象
                .build();
    }

    /**
     * 创建 API 信息
     */
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("测试接口文档示例")
                .description("我是一段描述")
                .version("1.0.0") // 版本号
                .contact(new Contact("芋艿", "http://www.iocoder.cn", "zhijiantianya@gmail.com")) // 联系人
                .build();
    }

}

版本差异:在使用官方 Starter 时,我们并不需要添加 @EnableSwagger2 注解,声明开启 Swagger 的功能。

3.2 简单测试

重启启动 SpringBoot 应用,访问 Swagger UI 界面,查看自定义配置是否生效。如下图所示:

Swagger UI 界面

成功~

4. 自定义 Starter

因为官方 Starter 提供的配置项较少,所以艿艿建议可以在其的基础之上,自定义一个公司的 Swagger Starter,提供更多自定义的配置项。

例如说,艿艿在自己的 onemall 开源项目中,自定义了 mall-spring-boot-starter-swagger 库。比较简单,胖友一看就明白,就不详细讲解代码。如下图所示:

自定义 Swagger Starter

这样,我们在 Web 项目中使用时,只需要引入 mall-spring-boot-starter-swagger 依赖,添加几行 Swagger 配置即可。如下图所示:

具体使用

666. 彩蛋

至此,我们已经完成 Swagger 官方 Starter 的学习,一起来简单总结下:

  • 通过在项目中引入 springfox-boot-starter 依赖,可以实现 Swagger 的自动配置,非常方便的完成它的集成。

  • 由于 Swagger 官方 Starter 提供的自定义配置项较少,所以建议在其的基础上,进行二次开发,实现适合公司或者团队的 Swagger Starter。


End~继续抠脚。

我是艿艿,一个每天徘徊在煞笔与牛啤的死胖子。

我

    



欢迎加入我的知识星球,一起探讨架构,交流源码。加入方式,长按下方二维码噢:

已在知识星球更新源码解析如下:

最近更新《芋道 SpringBoot 2.X 入门》系列,已经 20 余篇,覆盖了 MyBatis、Redis、MongoDB、ES、分库分表、读写分离、SpringMVC、Webflux、权限、WebSocket、Dubbo、RabbitMQ、RocketMQ、Kafka、性能测试等等内容。

提供近 3W 行代码的 SpringBoot 示例,以及超 4W 行代码的电商微服务项目。

获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。

兄弟,艿一口,点个赞!????

swagger官方文档离线版 立即下载

相关推荐

swagger官方文档

swagger官方文档swagger官方文档swagger官方文档swagger官方文档swagger官方文档

Swagger官网与官方文档

Swagger官网 :http://swagger.io/ Swagger官方文档:https://github.com/swagger-api/swagger-core/wiki/Annotations

你今天真好看呀 1万+

51单片机IAP技术详解:从原理到实战,实现远程程序自更新

在嵌入式系统开发中,程序更新是产品维护和功能迭代的核心需求。传统方式依赖外部烧录器,操作繁琐且无法远程进行。IAP(在应用中编程)技术则从原理层面解决了这一难题,它允许单片机在运行过程中通过特定接口(如串口)动态修改自身的Flash程序存储器。这项技术的核心价值在于赋予设备远程升级和自主维护的能力,极大地延长了产品生命周期并降低了维护成本。其典型应用场景包括智能家居控制器、工业数据采集模块和远程仪表等部署后不便拆卸的设备。本文以经典的51单片机(如STC89C52)为例,深入剖析IAP的实现,其中Bootl

weixin_29161719的博客 407

还在手动整合Swagger?Swagger官方Starter是真的香

之前项目中整合Swagger都是直接通过依赖springfox-swagger、springfox-swagger-ui两个jar包来实现的,最近发现springfox 3.0.0版本已经有了自己的SpringBoot Starter,使用起来更契合SpringBoot项目,非常方便,推荐给大家! 使用官方Starter 我们先使用官方Starter来整合Swagger看看是否够简单! 首先在pom.xml中添加springfox官方Swagger依赖; <!--springfox.

m0_67505824的博客 380

231003-四步MacOS-iPadOS设置无线竖屏随航SideCar

新建虚拟屏幕参考文献。

专注机器学习之路 7492

python 成语接龙-连接数据库

from xpinyin import Pinyin import pymysql while 1: conn = pymysql.connect( host='localhost', #本地连接 user='root', #数据库账户名 password='password', #数据库密码 db='dic',

Hero2902的博客 599

零侵入全自动接口文档生成 Doc-Apis 正式向丝袜哥(Swagger宣战)

doc-apis是一款真正意义上的零侵入接口文档生成工具,也是目前全球使用最为简单的接口文档生成工具,无需增加一行代码,无需增加一行配置,甚至都不需要把它打包进项目,只需要几秒,将maven坐标(gav)引入项目,轻点启动,即可一次性生成web,ios,android等多端多语种国际化接口文档,并且支持在线调试等众多强大功能.

AstarCloud 779

Arduino for ESP32-----ESP-NOW介绍及使用

ESP-NOWESP-NOW介绍ESP-NOW支持以下特性ESP-NOW技术也存在以下局限性获取ESP32的MAC地址ESP-NOW单向通信(One-way communication)ESP32单板间的双向通信一对多通信(一发多收)一对多通信(多发一收) ESP-NOW介绍 ESP-NOW是一种由Espressif开发的协议,可以让多个设备在不使用Wi-Fi的情况下相互通信。该协议类似于低功耗的2.4GHz无线连接。设备之间的配对需要在通信之前完成。配对完成后,连接是安全的、点对点的,不需要握手。这意味着

Better_man1的博客 2万+

swagger配置

import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation

①杯空氣的博客 357

IPD(集成产品开发)管理之道

IPD,是集成产品开发(Integrated Product Development)的缩写,它是集成了众多管理模型和理论、众多企业最佳管理实践的一整套体系,可以帮助企业快速响应市场变化、缩短产品上市时间、减少资源浪费、提高生产力,最终取得商业成功。IPD的思想最早来源于美国PRTM公司出版的《产品及生命周期优化法》一书中,该书详细描述了IPD模式所包含的各个方面。但IPD在中国的普及,源于IBM和华为的推行使用。IPD作为一套先进的产品研发管理模式,其成功的基础是功能部门和各团队之间的密切配合。

钢镚·真的博客 2716

QNX侧触摸屏(TP)Bringup流程与源码深度解析

QNX侧TP Bringup的核心在于构建。

QQ_778132974的博客 479

Swagger——快速使用swagger

swagger使用教程,springboot整合使用swagger

YR_112233的博客 8万+

VTK API 详解(134):vtkOBJWriter - 写入 OBJ 模型

是 VTK 中用于将数据写入 Wavefront OBJ 文件格式的类。OBJ 格式是广泛支持的 3D 网格模型格式,支持顶点、面和基本几何信息的保存,便于模型在多种三维软件间交换。

yumeiguo的博客 140

Swagger

Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。使用 Swagger,就是把相关的信息存储在它定义的描述文件里面(yml或json格式),再通过维护这个描述 文件可以去更新接口文档,以及生成各端代码。而Springfox-swagger,则可以通过扫描代码去生成这个 描述文件,连描述文件都不需要再去维护了。所有的信息,都在代码里面了。代码即接口文档,接口文 档即代码。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。

m0_74002833的博客 1259

Win11右下角不显示图标怎么办?Win11右下角不显示图标的解决方法

所以有不少符合资格的小伙伴都下载进行体验了,但是有的小伙伴在升级完系统之后发现桌面右下角不显示任何图标,那么遇到这种情况要怎么办呢?下面就和小编一起来看看有什么解决方法吧。2、接着找到任务栏设置中的“taskbar corner overflow”。3、然后在下方勾选打开想要显示的图标程序就可以了。1、首先右键任务栏,在其中选择“任务栏设置”。目前微软已经正式推出了。

2401_88800025的博客 888

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

重磅:Swagger3.0 官方 starter 诞生了,其它的都可以扔了~

点击上方“芋道源码”,选择“设为星标”管她前浪,还是后浪?能浪的浪,才是好浪!每天 8:55 更新文章,每天掉亿点点头发...源码精品专栏原创 | Java 2020 超神之路,很肝~...

芋艿V 770

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

dubbo2.7.9升级到dubbo3.0.7+nacos1.4.3+springboot2.6.6成功实践笔记

升级过程中遇到一堆的坑,不过都一一解决了,主要是版本冲突,启动失败 以下是正确配置: springboot依赖 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.6.6</version>

5859

数学建模模型总结

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

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Swagger 3.0 官方 starter 诞生了,其它的都可以扔了~

点击上方IT牧场,选择置顶或者星标技术干货每日送达# swagger介绍对于 Rest API 来说很重要的一部分内容就是文档,Swagger 为我们提供了一套通过代码和注解自动生...

ITMuch的专栏 3771

Swagger的使用教程

什么是Swagger? 官网:https://swagger.io/ Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。主要是生成规范的后端接口文档,并兼顾后端接口测试功能。为什么使用Swagger? 起初,后端开发过程中,程序员需要创建一份API文档来记录所有的接口细节,供其他开发人员使用提供的接口服务,但会存在以下的问题:接口众多,并且细节复杂需要根据接口的变化,不断修改API文档,非常麻烦,费时费力Sw

weixin_69889539的博客 5567

还在手动整合Swagger?Swagger官方Starter是真的香!

之前项目中整合Swagger都是直接通过依赖springfox-swagger、springfox-swagger-ui两个jar包来实现的,最近发现springfox 3.0.0版本已...

macrozheng的专栏 1039

Swagger 3.0 使用指南

SpringBoot整合swagger,使用SopringFox 3.0

屠龙少年 8127

Swagger-的使用(详细教程)

作为后端开放人员,最烦的事就是自己写接口文档和别人没有写接口文档,不管是前端还是后端开发,多多少少都会被接口文档所折磨,前端会抱怨后端没有及时更新接口文档,而后端又会觉得编写接口文档太过麻烦。Swagger可以较好的接口接口文档的交互问题,以一套标准的规范定义接口以及相关的信息,就能做到生成各种格式的接口文档,生成多种语言和客户端和服务端的代码,以及在线接口调试页面等等。只需要更新Swagger描述文件,就能自动生成接口文档,做到前端、后端联调接口文档的及时性和便利性。https。...

m0_67392409的博客 3437

Swagger零基础教学,看这篇就够啦!

Swagger能够自动生成和展示API接口文档,这在开发或测试环境下非常有用,但在生产环境中,如果Swagger被开启,可能会将API接口暴露给潜在的攻击者,增加安全风险。application.yml -------------------------- 全局配置文件。application-dev.yml -------------------- 开发环境配置文件。application-pro.yml -------------------- 生产环境配置文件。

cfjbcg的博客 2415

Swagger学习二

可选format修饰符用作字符串内容和格式的提示。在 API 规范中,您可以使用 XML 和 JSON 格式描述数据,因为它们可以轻松互换。:根据 OpenAPI 规范生成客户端代码、服务器端代码和 API 文档。:一个交互式界面,用于可视化 API 文档并测试 API 端点。在OpenAPI 3.0中,可以描述直接用请求内容上传的文件和随。:一个在线编辑器,用于编写和验证 OpenAPI 规范文件。:一个集成的平台,用于团队协作设计和发布 API。,具体取决于文件内容的编码方式。

一个写了10年bug的程序员日常笔记。 1928

Swagger 的介绍以及使用

Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。使用Swagger,就是把相关的信息存储在它定义的描述文件里面(yml或json格式),再通过维护这个描述文件可以去更新接口文档,以及生成各端代码。而Springfox-swagger,则可以通过扫描代码去生成这个描述文件,连描述文件都不需要再去维护了。所有的信息,都在代码里面了。代码即接口文档,接口文档即代码。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。

weixin_62587914的博客 629
上一篇: 时间插入 MySQL 数据库,结果竟然少了 8 小时!
下一篇: 如何用你最熟悉的 SQL 来查询 Elasticsearch 中的数据?
公众号-芋道源码
博客等级 码龄10年 1636粉丝 377原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值