当前位置: 首页 > news >正文

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.前言 由于最近做了一个需求&#xff0c;界面上有一个按钮&#xff0c;点击按钮后将一个文件夹中的word文档显示在页面中&#xff0c;并且有一个下拉框可以选择不同的文档&#xff0c;选择文档可以显示该文档。这里我选择使用fr.opensagres.poi.xwpf.converter.pdf-gae依赖包…...

Java多线程--线程间的通信

文章目录 一、线程间的通信&#xff08;1&#xff09;为什么要处理线程间的通信&#xff08;2&#xff09;等待唤醒机制 二、案例&#xff08;1&#xff09;案例1、创建线程2、解决线程安全问题3、等待4、唤醒5、同步监视器 &#xff08;2&#xff09;调用wait和notify需注意的…...

vue + element 页面滚动计算百分比 + 节流函数

html&#xff1a; <el-progress :percentage"scrollValue"></el-progress> js&#xff1a; data() {return {scrollValue: 0,} }, mounted() {window.addEventListener(scroll, this.handleScroll) // 监听页面滚动 }, beforeDestroy() {window.remov…...

【笔记】React Native实战练习(仿网易云游戏网页移动端)

/** * 如果系统看一遍RN相关官方文档&#xff0c;可能很快就忘记了。一味看文档也很枯燥无味&#xff0c; * 于是大概看了关键文档后&#xff0c;想着直接开发一个Demo出来&#xff0c;边学边写&#xff0c;对往后工作 * 开发衔接上能够更顺。这期间肯定会遇到各种各样的问题&a…...

Android SystemUI 介绍

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

2024美赛数学建模A题思路分析 - 资源可用性和性别比例

1 赛题 问题A&#xff1a;资源可用性和性别比例 虽然一些动物物种存在于通常的雄性或雌性性别之外&#xff0c;但大多数物种实质上是雄性或雌性。虽然许多物种在出生时的性别比例为1&#xff1a;1&#xff0c;但其他物种的性别比例并不均匀。这被称为适应性性别比例的变化。例…...

2024年数学建模美赛C题(预测 Wordle)——思路、程序总结分享

1: 问题描述与要求 《纽约时报》要求您对本文件中的结果进行分析&#xff0c;以回答几个问题。 问题1&#xff1a;报告结果的数量每天都在变化。开发一个模型来解释这种变化&#xff0c;并使用您的模型为2023年3月1日报告的结果数量创建一个预测区间。这个词的任何属性是否会…...

TryHackMe-File Inclusion练习

本文相关的TryHackMe实验房间链接&#xff1a;TryHackMe | Why Subscribe 路径遍历(目录遍历) LocationDescription/etc/issue包含要在登录提示之前打印的消息或系统标识。/etc/profile控制系统范围的默认变量&#xff0c;例如导出&#xff08;Export&#xff09;变量、文件创…...

Leetcode 《面试经典150题》169. 多数元素

题目 给定一个大小为 n 的数组 nums &#xff0c;返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的&#xff0c;并且给定的数组总是存在多数元素。 示例 1&#xff1a; 输入&#xff1a;nums [3,2,3] 输出&#xff1a;3示…...

百度输入法往选字框里强塞广告

关注卢松松&#xff0c;会经常给你分享一些我的经验和观点。 国内几乎100%的输入法都有广告&#xff0c;只是你们没发现而已&#xff01;&#xff01;&#xff01; 百度输入法居然在输入法键盘上推送广告&#xff0c;近日&#xff0c;博主阑夕 表示&#xff0c;V2EX论坛上有…...

分享一个Qt使用的模块间通信类

需求&#xff1a; 不同线程&#xff0c;或者同一线程的不同类之间通信&#xff0c;按照Qt的机制&#xff0c;定义一个信号&#xff0c;一个槽&#xff0c;然后绑定。以两个类A,B为例&#xff0c;A触发一个信号&#xff0c;B执行一个槽&#xff0c;在定义好信号和槽之后&#x…...

工作七年,对消息推送使用的一些经验和总结

前言&#xff1a;不管是APP还是WEB端都离不开消息推送&#xff0c;尤其是APP端&#xff0c;push消息&#xff0c;小信箱消息&#xff1b;WEB端的代办消息等。因在项目中多次使用消息推送且也是很多项目必不可少的组成部分&#xff0c;故此总结下供自己参考。 一、什么是消息推…...

计网——应用层

应用层 应用层协议原理 网络应用的体系结构 客户-服务器&#xff08;C/S&#xff09;体系结构 对等体&#xff08;P2P&#xff09;体系结构 C/S和P2P体系结构的混合体 客户-服务器&#xff08;C/S&#xff09;体系结构 服务器 服务器是一台一直运行的主机&#xff0c;需…...

算法面试八股文『 基础知识篇 』

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

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)

场景&#xff1a; 在表单页&#xff0c;有图片需要上传&#xff0c;表单的操作行按钮中有上传按钮&#xff0c;点击上传按钮。 弹出el-dialog进行图片的上传&#xff0c;可以上传多张图片。 由于多个表单页都有上传多张图片的操作&#xff0c;因此将上传多图的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…...

脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)

一、数据处理与分析实战 &#xff08;一&#xff09;实时滤波与参数调整 基础滤波操作 60Hz 工频滤波&#xff1a;勾选界面右侧 “60Hz” 复选框&#xff0c;可有效抑制电网干扰&#xff08;适用于北美地区&#xff0c;欧洲用户可调整为 50Hz&#xff09;。 平滑处理&…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试

作者&#xff1a;Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位&#xff1a;中南大学地球科学与信息物理学院论文标题&#xff1a;BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接&#xff1a;https://arxiv.…...

多场景 OkHttpClient 管理器 - Android 网络通信解决方案

下面是一个完整的 Android 实现&#xff0c;展示如何创建和管理多个 OkHttpClient 实例&#xff0c;分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

如何在看板中体现优先级变化

在看板中有效体现优先级变化的关键措施包括&#xff1a;采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中&#xff0c;设置任务排序规则尤其重要&#xff0c;因为它让看板视觉上直观地体…...

2025盘古石杯决赛【手机取证】

前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来&#xff0c;实在找不到&#xff0c;希望有大佬教一下我。 还有就会议时间&#xff0c;我感觉不是图片时间&#xff0c;因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角&#xff0c;以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向&#xff0c;距离坐标原点x个像素;第二个是y坐标&#xff0c;表示当前位置为垂直方向&#xff0c;距离坐标原点y个像素。 坐标体系-像素 …...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek

文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama&#xff08;有网络的电脑&#xff09;2.2.3 安装Ollama&#xff08;无网络的电脑&#xff09;2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...

现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?

现有的 Redis 分布式锁库&#xff08;如 Redisson&#xff09;相比于开发者自己基于 Redis 命令&#xff08;如 SETNX, EXPIRE, DEL&#xff09;手动实现分布式锁&#xff0c;提供了巨大的便利性和健壮性。主要体现在以下几个方面&#xff1a; 原子性保证 (Atomicity)&#xff…...

虚拟电厂发展三大趋势:市场化、技术主导、车网互联

市场化&#xff1a;从政策驱动到多元盈利 政策全面赋能 2025年4月&#xff0c;国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》&#xff0c;首次明确虚拟电厂为“独立市场主体”&#xff0c;提出硬性目标&#xff1a;2027年全国调节能力≥2000万千瓦&#xff0…...

Selenium常用函数介绍

目录 一&#xff0c;元素定位 1.1 cssSeector 1.2 xpath 二&#xff0c;操作测试对象 三&#xff0c;窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四&#xff0c;弹窗 五&#xff0c;等待 六&#xff0c;导航 七&#xff0c;文件上传 …...