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

springboot集成swagger3+解决页面无法访问问题

引入依赖

pom文件引入swagger3依赖

        <dependency><groupId>io.springfox</groupId><artifactId>springfox-boot-starter</artifactId><version>3.0.0</version></dependency>

配置启动文件

swagger使用ant_pattern_parser解析路径,但是spring boot在2.6之后(好现实2.6),修改为了path_pattern_parser。所以为了能使swagger正常使用,需要配置如下

spring:mvc:pathmatch:matching-strategy: ant_path_matcher

否则会报错
Failed to start bean ‘documentationPluginsBootstrapper’; nested exception is java.lang.NullPointerException
在这里插入图片描述

程序启动swagger

为了代码优雅,把swagger3启动注解写在了配置类
@EnableOpenApi 注解一定要写,可以写在启动类 也可有写在配置类

@EnableOpenApi
@Configuration
public class SwaggerConfig {/*** 用于读取配置文件中 swagger 属性是否开启*/@Value("${swagger.enabled}")Boolean swaggerEnabled;@Beanpublic Docket createRestApi() {return new Docket(DocumentationType.OAS_30).apiInfo(apiInfo()).enable(swaggerEnabled).select().paths(PathSelectors.any()).build();}private ApiInfo apiInfo() {return new ApiInfoBuilder().title("FH Admin Swagger3 RESTful API") 	// 页面标题.version("3.0")								// 版本号.description("fhadmin.org")				    // 描述.build();}}

直接访问swagger

Swagger UI的路径(网上一般是这个):http://localhost:8080/swagger-ui/index.html
在这里插入图片描述

解决swagger无法访问此页面

在这里插入图片描述
疑点1:swagger地址压根没有写对!!!
不要直接根据网上给的http://localhost:8080/swagger-ui/index.html直接访问
解决方案:
正确链接拼接为:
http://localhost:端口号/api/swagger-ui/index.html
api是系统配置文件的默认前缀path,如没则忽略
比如配置是

server:servlet:context-path: /admin-apiport: 8000

那么swagger的访问地址是:
http://localhost:8000/admin-api/swagger-ui/index.html

疑点2 检查您的API是否允许跨域资源共享(CORS)。如果不允许,则Swagger UI无法从API获取资源。
疑点3 在您的服务器上检查您的防火墙设置,以确保您的API端口没有被阻塞。
疑点4 swagger地址被拦截,添加swagger拦截配置

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {registry.addResourceHandler("/swagger-ui/**").addResourceLocations("classpath:/META-INF/resources/webjars/springfox-swagger-ui/").resourceChain(false);}@Overridepublic void addViewControllers(ViewControllerRegistry registry) {registry.addViewController("/swagger-ui/").setViewName("forward:/swagger-ui/index.html");}
}
http://www.lryc.cn/news/231042.html

相关文章:

  • mapreduce-maven--30.串联所有单词的字串
  • Hive使用max case when over partition by 实现单个窗口取两个窗口的值(单个开窗函数,实际取两个窗口)
  • 2023年【北京市安全员-B证】试题及解析及北京市安全员-B证证考试
  • 二维码智慧门牌管理系统升级解决方案:流量监控引领服务卓越
  • Linux内核面试题(1)
  • wpr -start generalprofile -start pool -filemode 这句命令具体是什么意思
  • C/CPP基础练习题多维数组,矩阵转置,杨辉三角详解
  • 父组件用ref获取子组件数据
  • Haskell添加HTTP爬虫ip编写的爬虫程序
  • MySQL 社区开源备份工具 Xtrabackup 详解
  • 【仿真】ruckig在线轨迹生成器示例
  • LeetCode 面试题 16.22. 兰顿蚂蚁
  • Docker安装详细步骤及相关环境安装配置(mysql、jdk、redis、自己的私有仓库Gitlab 、C和C++环境以及Nginx服务代理)
  • 科研学习|研究方法——Python计量Logit模型
  • 灵活运用Vue指令:探究v-if和v-for的使用技巧和注意事项
  • nvidia-docker部署pytorch服务【GPU工作站】
  • 单链表的实现
  • 【python】面向对象(类型定义魔法方法)
  • 1.微服务与SpringCloud
  • 【2023全网最全最火】Selenium WebDriver教程(建议收藏)
  • dimp 导入dmp文件报错:无效的模式名(DM8:达梦数据库)
  • 宿主机无法连接docker里的redis问题解决(生产环境慎用)
  • 给女朋友开发个小程序低价点外卖吃还能赚钱
  • 外贸客户管理系统是什么?推荐的管理软件?
  • 数据挖掘:分类,聚类,关联关系,回归
  • 力扣labuladong一刷day10一网打尽股票买卖问题共6题
  • 微信小程序手写table表格
  • UE5 - UI Material Lab 学习笔记
  • oracle删除重复的数据
  • Python中的并发编程是什么,如何使用Python进行并发编程?