Swagger学习使用
swagger升级导致访问ui页面地址不一样
方式一
依赖
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.3.RELEASE</version>
</parent>
<dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.9.2</version>
</dependency>
<dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>2.9.2</version>
</dependency>
启用Swagger2
@EnableSwagger2
@SpringBootApplication
public class AmisProjectApplication extends SpringBootServletInitializer{public static void main(String[] args) {SpringApplication.run(AmisProjectApplication.class,args);}//使用外部tomcat启动项目要重写该方法@Overrideprotected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {return builder.sources(AmisProjectApplication.class);}
}
定义Swagger配置类
package com.xysd.amisproject;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.ParameterBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.schema.ModelRef;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Parameter;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;import java.util.ArrayList;
import java.util.List;@Configuration
public class SwaggerConfig {@Beanpublic Docket createApiDocket() {ParameterBuilder tokenPar = new ParameterBuilder();List<Parameter> pars = new ArrayList<Parameter>();tokenPar.parameterType("header")//参数类型支持header, cookie, body, query etc.name("access_token")//参数名.defaultValue("")//默认值.description("令牌")//描述信息.modelRef(new ModelRef("string"))//指定参数值的类型.required(false)//非必需,这里是全局配置.build();pars.add(tokenPar.build());//根据配置文件项 swagger是否启用,禁用return new Docket(DocumentationType.SWAGGER_2).globalOperationParameters(pars).apiInfo(apiInfo()).enable(true).select().apis(RequestHandlerSelectors.basePackage("com.xysd.amisproject")).paths(PathSelectors.ant("/api/**")).build().groupName("对外API接口文档");}@Beanpublic Docket create_ApiDocket() {ParameterBuilder tokenPar = new ParameterBuilder();List<Parameter> pars = new ArrayList<Parameter>();tokenPar.parameterType("header")//参数类型支持header, cookie, body, query etc.name("access_token")//参数名.defaultValue("")//默认值.description("令牌")//描述信息.modelRef(new ModelRef("string"))//指定参数值的类型.required(false)//非必需,这里是全局配置.build();pars.add(tokenPar.build());//根据配置文件项 swagger是否启用,禁用return new Docket(DocumentationType.SWAGGER_2).globalOperationParameters(pars).apiInfo(apiInfo()).enable(true).select().apis(RequestHandlerSelectors.basePackage("com.xysd.amisproject")).paths(PathSelectors.ant("/_api/**")).build().groupName("对内API接口文档");}private ApiInfo apiInfo() {return new ApiInfoBuilder().title("AMIS-PROJECT").description("AMIS-PROJECT接口文档").termsOfServiceUrl("").version("1.0").build();}}
测试
启动本地服务
访问地址
http://localhost:8000/amis-project/swagger-ui.html
效果图
方式二
依赖
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.5.6.RELEASE</version>
</parent>
<dependency><groupId>io.springfox</groupId><artifactId>springfox-boot-starter</artifactId><version>3.0.0</version>
</dependency>
启用Swagger2
@EnableOpenApi
@SpringBootApplication
public class AmisProjectApplication extends SpringBootServletInitializer{public static void main(String[] args) {SpringApplication.run(AmisProjectApplication.class,args);}//使用外部tomcat启动项目要重写该方法@Overrideprotected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {return builder.sources(AmisProjectApplication.class);}
}
定义配置类
package com.xysd.bizbase.resources;import java.util.ArrayList;
import java.util.List;import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.builders.RequestParameterBuilder;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.ParameterType;
import springfox.documentation.service.RequestParameter;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;@Configuration
public class SwaggerConfig {@Value("${swagger.sysName:''}")private String swaggerSysName;@Beanpublic Docket createApiDocket() {List<RequestParameter> pars = new ArrayList<RequestParameter>();RequestParameterBuilder tokenPar = new RequestParameterBuilder();tokenPar.in(ParameterType.HEADER)//参数类型支持header, cookie, body, query etc.name("access_token")//参数名.description("令牌")//描述信息.required(false)//非必需,这里是全局配置//.query(sb -> sb.defaultValue("1").allowEmptyValue(true)) //指定默认值 指定是否必填;pars.add(tokenPar.build());return new Docket(DocumentationType.OAS_30).globalRequestParameters(pars).apiInfo(apiInfo()).select().apis(RequestHandlerSelectors.basePackage("com.xysd")).paths(PathSelectors.ant("/*/api/**").or(path -> path.contains("login"))).build().groupName("对外API接口文档");}@Beanpublic Docket createRestDocket() {List<RequestParameter> pars = new ArrayList<RequestParameter>();RequestParameterBuilder tokenPar = new RequestParameterBuilder();tokenPar.in(ParameterType.HEADER)//参数类型支持header, cookie, body, query etc.name("access_token")//参数名.description("令牌")//描述信息.required(false)//非必需,这里是全局配置//.query(sb -> sb.defaultValue("1").allowEmptyValue(true)) //指定默认值 指定是否必填;pars.add(tokenPar.build());return new Docket(DocumentationType.OAS_30).globalRequestParameters(pars).apiInfo(apiInfo()).select().apis(RequestHandlerSelectors.basePackage("com.xysd")).paths(PathSelectors.ant("/*/rest/**").or(path -> path.contains("login"))).build().groupName("对外REST接口文档");}@Beanpublic Docket create_ApiDocket() {List<RequestParameter> pars = new ArrayList<RequestParameter>();RequestParameterBuilder tokenPar = null;tokenPar = new RequestParameterBuilder();tokenPar.in(ParameterType.HEADER)//参数类型支持header, cookie, body, query etc.name("access_token")//参数名.description("访问令牌")//描述信息.required(false)//非必需,这里是全局配置//.query(sb -> sb.defaultValue("1").allowEmptyValue(true)) //指定默认值 指定是否必填;pars.add(tokenPar.build());tokenPar = new RequestParameterBuilder();tokenPar.in(ParameterType.HEADER)//参数类型支持header, cookie, body, query etc.name("inner_token")//参数名.description("内部令牌")//描述信息.required(false)//非必需,这里是全局配置//.query(sb -> sb.defaultValue("1").allowEmptyValue(true)) //指定默认值 指定是否必填;pars.add(tokenPar.build());return new Docket(DocumentationType.OAS_30).globalRequestParameters(pars).apiInfo(apiInfo()).select().apis(RequestHandlerSelectors.basePackage("com.xysd")).paths(PathSelectors.ant("/*/_api/**")).build().groupName("对内_API接口文档");}private ApiInfo apiInfo() {return new ApiInfoBuilder().title(swaggerSysName+"接口文档").description(swaggerSysName+"接口文档")//.termsOfServiceUrl("").version("1.0").build();}}
测试
启动服务
访问地址
http://localhost:8000/amis-project/swagger-ui/index.html
效果图
相关文章:

Swagger学习使用
swagger升级导致访问ui页面地址不一样 方式一 依赖 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.3.RELEASE</version> </parent> <dependen…...
SpringBoot使用poi将word转换为PDF并且展示
1.前言 由于最近做了一个需求,界面上有一个按钮,点击按钮后将一个文件夹中的word文档显示在页面中,并且有一个下拉框可以选择不同的文档,选择文档可以显示该文档。这里我选择使用fr.opensagres.poi.xwpf.converter.pdf-gae依赖包…...

Java多线程--线程间的通信
文章目录 一、线程间的通信(1)为什么要处理线程间的通信(2)等待唤醒机制 二、案例(1)案例1、创建线程2、解决线程安全问题3、等待4、唤醒5、同步监视器 (2)调用wait和notify需注意的…...
vue + element 页面滚动计算百分比 + 节流函数
html: <el-progress :percentage"scrollValue"></el-progress> js: data() {return {scrollValue: 0,} }, mounted() {window.addEventListener(scroll, this.handleScroll) // 监听页面滚动 }, beforeDestroy() {window.remov…...

【笔记】React Native实战练习(仿网易云游戏网页移动端)
/** * 如果系统看一遍RN相关官方文档,可能很快就忘记了。一味看文档也很枯燥无味, * 于是大概看了关键文档后,想着直接开发一个Demo出来,边学边写,对往后工作 * 开发衔接上能够更顺。这期间肯定会遇到各种各样的问题&a…...

Android SystemUI 介绍
目录 一、什么是SystemUI 二、SystemUI应用源码 三、学习 SystemUI 的核心组件 四、修改状态与导航栏测试 本篇文章,主要科普的是Android SystemUI , 下一篇文章我们将介绍如何把Android SystemUI 应用转成Android Studio 工程项目。 一、什么是Syst…...

2024美赛数学建模A题思路分析 - 资源可用性和性别比例
1 赛题 问题A:资源可用性和性别比例 虽然一些动物物种存在于通常的雄性或雌性性别之外,但大多数物种实质上是雄性或雌性。虽然许多物种在出生时的性别比例为1:1,但其他物种的性别比例并不均匀。这被称为适应性性别比例的变化。例…...

2024年数学建模美赛C题(预测 Wordle)——思路、程序总结分享
1: 问题描述与要求 《纽约时报》要求您对本文件中的结果进行分析,以回答几个问题。 问题1:报告结果的数量每天都在变化。开发一个模型来解释这种变化,并使用您的模型为2023年3月1日报告的结果数量创建一个预测区间。这个词的任何属性是否会…...

TryHackMe-File Inclusion练习
本文相关的TryHackMe实验房间链接:TryHackMe | Why Subscribe 路径遍历(目录遍历) LocationDescription/etc/issue包含要在登录提示之前打印的消息或系统标识。/etc/profile控制系统范围的默认变量,例如导出(Export)变量、文件创…...
Leetcode 《面试经典150题》169. 多数元素
题目 给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 1: 输入:nums [3,2,3] 输出:3示…...

百度输入法往选字框里强塞广告
关注卢松松,会经常给你分享一些我的经验和观点。 国内几乎100%的输入法都有广告,只是你们没发现而已!!! 百度输入法居然在输入法键盘上推送广告,近日,博主阑夕 表示,V2EX论坛上有…...
分享一个Qt使用的模块间通信类
需求: 不同线程,或者同一线程的不同类之间通信,按照Qt的机制,定义一个信号,一个槽,然后绑定。以两个类A,B为例,A触发一个信号,B执行一个槽,在定义好信号和槽之后&#x…...

工作七年,对消息推送使用的一些经验和总结
前言:不管是APP还是WEB端都离不开消息推送,尤其是APP端,push消息,小信箱消息;WEB端的代办消息等。因在项目中多次使用消息推送且也是很多项目必不可少的组成部分,故此总结下供自己参考。 一、什么是消息推…...

计网——应用层
应用层 应用层协议原理 网络应用的体系结构 客户-服务器(C/S)体系结构 对等体(P2P)体系结构 C/S和P2P体系结构的混合体 客户-服务器(C/S)体系结构 服务器 服务器是一台一直运行的主机,需…...

算法面试八股文『 基础知识篇 』
博客介绍 近期在准备算法面试,网上信息杂乱不规整,出于强迫症就自己整理了算法面试常出现的考题。独乐乐不如众乐乐,与其奖励自己,不如大家一起嗨。以下整理的内容可能有不足之处,欢迎大佬一起讨论。 PS:…...

docker-学习-4
docker学习第四天 docker学习第四天1. 回顾1.1. 容器的网络类型1.2. 容器的本质1.3. 数据的持久化1.4. 看有哪些卷1.5. 看卷的详细信息 2. 如何做多台宿主机里的多个容器之间的数据共享2.1. 概念2.2. 搭NFS服务器实现多个容器之间的数据共享的详细步骤2.3. 如果是多台机器&…...

el-upload子组件上传多张图片(上传为files或base64url)
场景: 在表单页,有图片需要上传,表单的操作行按钮中有上传按钮,点击上传按钮。 弹出el-dialog进行图片的上传,可以上传多张图片。 由于多个表单页都有上传多张图片的操作,因此将上传多图的el-upload定义…...
2024美赛数学建模C题思路源码——网球选手的动量
这题挺有意思,没具体看比赛情况,打过比赛的人应该都知道险胜局(第二局、第五局逆转局)最影响心态的,导致第3、5局输了 模型结果需要证明这样的现象 赛题目的 赛题目的:分析网球球员的表现 问题一.球员在比赛特定时间表现力 问题分析 excel数据:每个时间段有16场比赛,…...

金三银四_程序员怎么写简历_写简历网站
你们在制作简历时,是不是基本只关注两件事:简历模板,还有基本信息的填写。 当你再次坐下来更新你的简历时,可能会发现自己不自觉地选择了那个“看起来最好看的模板”,填写基本信息,却没有深入思考如何使简历更具吸引力。这其实是一个普遍现象:许多求职者仍停留在传统简历…...

echarts条形图添加滚动条
效果展示: 测试数据: taskList:[{majorDeptName:测试,finishCount:54,notFinishCount:21}, {majorDeptName:测试,finishCount:54,notFinishCount:21}, {majorDeptName:测试,finishCount:54,notFinishCount:21}, {majorDeptName:测试,finishCount:54,notFinishCount:21}, {maj…...

业务系统对接大模型的基础方案:架构设计与关键步骤
业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...

【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...

DAY 47
三、通道注意力 3.1 通道注意力的定义 # 新增:通道注意力模块(SE模块) class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...

Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...

回溯算法学习
一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...

JVM虚拟机:内存结构、垃圾回收、性能优化
1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...

android13 app的触摸问题定位分析流程
一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...

【无标题】湖北理元理律师事务所:债务优化中的生活保障与法律平衡之道
文/法律实务观察组 在债务重组领域,专业机构的核心价值不仅在于减轻债务数字,更在于帮助债务人在履行义务的同时维持基本生活尊严。湖北理元理律师事务所的服务实践表明,合法债务优化需同步实现三重平衡: 法律刚性(债…...

热烈祝贺埃文科技正式加入可信数据空间发展联盟
2025年4月29日,在福州举办的第八届数字中国建设峰会“可信数据空间分论坛”上,可信数据空间发展联盟正式宣告成立。国家数据局党组书记、局长刘烈宏出席并致辞,强调该联盟是推进全国一体化数据市场建设的关键抓手。 郑州埃文科技有限公司&am…...