SpringBoot整合Swagger3

项目整合swagger 阅读详情

前言

本文将介绍下API可视化框架Swagger在SpringBoot框架中的整合流程,对Swagger3进行测试的一系列内容。

开发背景

若项目是使用前后端分离的方式来开发的,前后端代码的开发就需要开发员进行分工协作,以及进行前后端联调,开发时必须规范开发接口。接口文档的编写工作通常由后端开发员完成,接口文档中包含接口说明、请求URL、请求参数、请求方法、响应数据说明这五个部分。但手动编写接口文档是非常棘手的,所以,接下来我们可以使用Swagger来编写接口文档。

Swagger是什么?(官网)

Swagger是全球最大的OpenAPI规范(OAS)API开发工具框架,支持从设计和文档到测试和部署的整个API生命周期的开发。Swagger是⼀个⽤于⽣成服务器接⼝的规范性⽂档、并且能够对接⼝进⾏测试的⼯具。

spring boot集成swagger3版本

  • 引入pom.xml依赖

            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-boot-starter</artifactId>
                <version>3.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.github.xiaoymin</groupId>
                <artifactId>knife4j-spring-boot-starter</artifactId>
                <version>3.0.3</version>
            </dependency>
    
  • 添加swagger3.0配置

package com.weh.config;

import com.google.common.collect.Sets;
import io.swagger.models.auth.In;
import org.apache.commons.lang3.reflect.FieldUtils;
import org.springframework.boot.SpringBootVersion;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.util.ReflectionUtils;
import org.springframework.web.servlet.config.annotation.InterceptorRegistration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.oas.annotations.EnableOpenApi;
import springfox.documentation.service.*;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spi.service.contexts.SecurityContext;
import springfox.documentation.spring.web.plugins.Docket;

import java.lang.reflect.Field;
import java.util.Collections;
import java.util.List;

@Configuration
@EnableOpenApi //注意:这个注解是重点
public class SwaggerConfig {
    /**
     * API 页面上半部分展示信息
     */
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title(" Api Doc")
                .description("SpringFox 3.0.0 发布: https://www.xx.xx/swagger-ui/index.html")
                .contact(new Contact("weh", null, "xxxxx"))
                .version(
                        "Application Version: "
                                + "1.0.0"
                                + ", Spring Boot Version: "
                                + SpringBootVersion.getVersion())
                .build();
    }

    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.OAS_30)
                .pathMapping("/")
                // 定义是否开启swagger,false为关闭,可以通过变量控制
                .enable(true)
                // 将api的元信息设置为包含在json ResourceListing响应中。
                .apiInfo(apiInfo())
                // 接口调试地址
                .host("http://localhost:9098")
                // 选择哪些接口作为swagger的doc发布
                .select()
                // 关键部分:扫描包的路径
                .apis(RequestHandlerSelectors.basePackage("com.weh.controller"))
                .paths(PathSelectors.any())
                .build()
                // 支持的通讯协议集合
                .protocols(Sets.newHashSet("http", "https"))
                // 授权信息设置,必要的header token等认证信息
                .securitySchemes(securitySchemes())
                // 授权信息全局应用
                .securityContexts(securityContexts());
    }

    /**
     * 设置授权信息
     */
    private List securitySchemes() {
        ApiKey apiKey = new ApiKey("BASE_TOKEN", "token", In.HEADER.toValue());
        return Collections.singletonList(apiKey);
    }

    /**
     * 授权信息全局应用
     */
    private List securityContexts() {
        return Collections.singletonList(
                SecurityContext.builder()
                        .securityReferences(
                                Collections.singletonList(
                                        new SecurityReference(
                                                "BASE_TOKEN",
                                                new AuthorizationScope[]{new AuthorizationScope("global", "")})))
                        .build());
    }

    public void addInterceptors(InterceptorRegistry registry) {
        try {
            Field registrationsField =
                    FieldUtils.getField(InterceptorRegistry.class, "registrations", true);
            List<InterceptorRegistration> registrations =
                    (List<InterceptorRegistration>) ReflectionUtils.getField(registrationsField, registry);
            if (registrations != null) {
                for (InterceptorRegistration interceptorRegistration : registrations) {
                    interceptorRegistration
                            .excludePathPatterns("/swagger**/**")
                            .excludePathPatterns("/webjars/**")
                            .excludePathPatterns("/v3/**")
                            .excludePathPatterns("/doc.html");
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

  • # 应用服务 WEB 访问端口
    server:
      port: 9098
    
  • 整体框架

在这里插入图片描述

访问网址:http://localhost:9098/doc.html
页面展示结果:
在这里插入图片描述

SpringBoot—Knife4j(Swagger3增强版) 【代码】SpringBoot整合Swagger3环境搭建。 阅读详情

相关推荐

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

SpringBoot整合系列:SpirngBoot整3合swagger

低调做人,低调编码,神码都是浮云 1万+

Swagger3的基本使用

Swagger3简介 swagger官网:传送门 swagger是一个Api框架,就是一个工具,就比如我们可以使用postman测试接口一样,swagger主要作用是生成RESTFUL接口的文档并且可以提供功能测试; 可以看一下官方文档简介: What Is Swagger? Swagger allows you to describe the structure of your APIs so that machines can read them. The ability of APIs to des

YXXXYX的博客 2万+

BUCK电路三种工作模式全解析:CCM、BCM、DCM到底怎么选?

本文深入解析BUCK电路的CCM、DCM和BCM三种工作模式,通过对比其电流波形、效率、纹波及环路特性,提供基于计算公式的量化判断方法。文章结合电池供电、高精度模拟等具体应用场景,给出明确的模式选型策略与实战设计指南,帮助工程师根据核心需求做出最优决策。

ee345的博客 486

Java实战:Spring Boot集成Swagger3

本文将详细介绍如何在Spring Boot应用程序中集成Swagger3,以构建现代化的RESTful API文档

oandy0的博客 7886

[数据转换]将NetCDF(NC)文件转换成单个GeoTIFF文件

有时候要提取tif格式数据中的气象数据,但从气象网站上下载的却是NC格式的文件。这就需要我们将NC格式的文件转换成TIF格式的文件。

G_sea_young的博客 1004

【GD32F407】i2c主机发送,从机中断接收

前言 现在手里负责的一个项目需要用i2c和主芯片进行通信主动发送,中断接收,这就需要支持i2c主机模式和从机模式,先查看原理图 这里我们用到了两条i2c总线进行数据的交替传输,避免在使用一条总线是发送数据和接收数据冲突 初始化i2c控制器 s32_k i2cDevInit(u8 byBusId, TI2cBus *pTI2cBus) { //PCLK = 36000000 BOOL retFlg = FALSE; int I2xSCL = pTI2cBus->byFastMode ?

Enosji的博客 6246

SpringBoot3整合Swagger

之前一直使用SpringBoot2与Swagger2,所以感觉都很顺利,因网上资源也比较多问题不大。但是自从更新idea2024、jdk17之后,很多依赖都是比较新的版本,之前的很多东西需要去适应新版本就会出现很多bug,网上的很多办法不好用,只好在改好bug之后记录一下,以便大家一起学习。提示Springdoc-OpenAPI 使用教程-优快云博客。

weixin_41863745的博客 1311

空天大模型详解

空天大模型是指面向空天信息领域(如卫星遥感、导航、气象等)设计的多模态人工智能模型,能够处理海量遥感数据、多传感器信息及跨时空分析任务。多模态融合:整合可见光、雷达、热红外、多光谱等多源遥感数据,构建统一表征空间,例如“空天·灵眸”3.0版支持航空、卫星及无人机数据的自动化解译。轻量化与高效推理:针对星载计算场景,采用分层量化、跨模态蒸馏技术压缩模型参数(如JigonGPT从1.02B压缩至0.23B,性能仅牺牲5.2%)18,并通过热传导架构提升计算速度2.4倍。神经符号结合。

zxy98的专栏 1568

SpringBoot 整合 Swagger3

目录 一 为什么需要整合 Swagger2 二 SpringBoot 整合 Swagger2 过程 2.1 引入依赖 2.2Swagger 配置 2.3 Restful 接口 2.4Swagger2文档 三 Swagger 注解说明 四 参考文档 一 为什么需要整合 Swagger2 公司在 wiki 或者 gitlab 那块手写接口文档很容易出现如下情况 ...

javaTalk 2320

遥感大模型之Prithvi的关键技术解读

Prithvi系列模型开创了遥感领域基础模型新范式,通过海量多源时空数据(HLS和SAR)与Vision Transformer架构的深度融合,采用掩码自编码器进行自监督预训练,实现了强大的地球观测表征能力。该技术体系突破传统方法在全局建模、多模态融合和时空分析上的局限,仅需少量标注数据即可在土地分类、灾害监测等任务上取得优异表现。从初代3亿参数到Prithvi-EO-2.0的10亿参数升级,展现了模型可扩展性,为构建地球数字孪生智能基座奠定基础。

panshengwu的博客 866

QT的温湿度显示系统

大家好,这里是石侃侃的博客,欢迎前来讨论这篇文章介绍的是DHT11在2440上的基于Qt5.6的应用基于单片机系统的温湿度监测系统构成框图如图2-1所示。图2-1 系统构成框图该系统采用单片机s3c2440作为了本设计的核心元件。利用LCD作为了显示器件,利用触摸屏作为用户界面输入设备,第一行显示当前实时的温度,湿度,第二行依次显示历史时刻最高的温度值,最高的湿度值。第三行是一个文本框,记录了程...

zxpcus的博客 1万+

SpringBoot整合Swagger3.0

SpringBoot整合Swagger3.0

qq_51569224的博客 2976

别再被 SerialPort 坑了!C# 串口通信的 3 大隐形陷阱与工业级解决方案

NET的SerialPort类更适合实验室调试,而非工业现场——它的设计目标是“能用”,而非“稳定”。工业级串口通信的核心,是在SerialPort基础上构建一层“防护壳”,用主动轮询对抗事件失效,用硬件级操作解决缓冲区谎言,用原子性流程避免关闭死锁。本文提供的类已在30+工业项目中验证(包括汽车生产线、智能仓储、环境监测),可直接替换原生SerialPort,解决90%以上的“玄学问题”。记住:工业场景的“稳定”,从来都不是靠运气,而是靠对每个细节的偏执把控。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 745

SpringBoot 3.x 整合swagger

对于SpringBoot而言,Swagger的作用是通过后端SpringBoot代码快速生成接口文档,方便测试接口以及前端使用。

m0_74823715的博客 1396

ESD防护设计宝典(十一):CE(传导发射)超标问题排查与解决

(Conducted Emission, CE),亦称为传导骚扰,是电子电气设备或系统内部的电压、电流通过信号线、电源线或地线向外传输,对其他电子电气设备或系统造成电磁干扰的物理现象。其。

m0_56451176的博客 856

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

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

Springboot整合Swagger3、Mybatis框架

自从Springboot升级到2.6.1版本之后再整合Swagger时会报出NPE错误,暂时还没有什么好的解决办法,这篇文章就先带大家使用2.5.1版本整合下Swagger3 1、整合Swagger 1.1、导入依赖 <!--整合Mybatis--> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-star

XuanRan的博客 4648

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

SpringBoot 整合swagger3.X

SpringBoot整合swagger3.X1. 引入依赖2. swagger配置3. 启动程序访问6. 集成增强文档knife4j6.1 添加依赖6.2 wagger配置类添加@EnableKnife4j注解6.3 启动访问5. 生成环境关闭swagger6. 集成SpringSecurity 1. 引入依赖 <!--引入spring web --> <dependency> <groupId>org.springframework.boot</gro

迪曼奥特迦-博客 2583

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

springboot整合swagger的3步骤

springboot整合swagger 添加swagger依赖 <!--整合swagger--> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifa...

qq_42895864的博客 4528
上一篇: Postman的安装及简单使用(API调试工具)
下一篇: springboot整合swagger项目中,出现报错信息(JWT 处理登录)
IT_WEH_coder
博客等级 码龄5年 2万+粉丝 111原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

IT_WEH_coder

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

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

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

打赏作者

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

抵扣说明:

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

余额充值