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…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)
目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现
摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...
leetcodeSQL解题:3564. 季节性销售分析
leetcodeSQL解题:3564. 季节性销售分析 题目: 表:sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

微信小程序云开发平台MySQL的连接方式
注:微信小程序云开发平台指的是腾讯云开发 先给结论:微信小程序云开发平台的MySQL,无法通过获取数据库连接信息的方式进行连接,连接只能通过云开发的SDK连接,具体要参考官方文档: 为什么? 因为…...

如何在最短时间内提升打ctf(web)的水平?
刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…...
JAVA后端开发——多租户
数据隔离是多租户系统中的核心概念,确保一个租户(在这个系统中可能是一个公司或一个独立的客户)的数据对其他租户是不可见的。在 RuoYi 框架(您当前项目所使用的基础框架)中,这通常是通过在数据表中增加一个…...
探索Selenium:自动化测试的神奇钥匙
目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...

Unity UGUI Button事件流程
场景结构 测试代码 public class TestBtn : MonoBehaviour {void Start(){var btn GetComponent<Button>();btn.onClick.AddListener(OnClick);}private void OnClick(){Debug.Log("666");}}当添加事件时 // 实例化一个ButtonClickedEvent的事件 [Formerl…...

sshd代码修改banner
sshd服务连接之后会收到字符串: SSH-2.0-OpenSSH_9.5 容易被hacker识别此服务为sshd服务。 是否可以通过修改此banner达到让人无法识别此服务的目的呢? 不能。因为这是写的SSH的协议中的。 也就是协议规定了banner必须这么写。 SSH- 开头,…...

leetcode_69.x的平方根
题目如下 : 看到题 ,我们最原始的想法就是暴力解决: for(long long i 0;i<INT_MAX;i){if(i*ix){return i;}else if((i*i>x)&&((i-1)*(i-1)<x)){return i-1;}}我们直接开始遍历,我们是整数的平方根,所以我们分两…...