记录一次swagger2踩坑记,网上资料杂乱而不完整,自己踩的坑还算比较多,记录下自己的解决历程
一、首次来看看遇到的第一个坑,如下图:
最常见错误
可以说配置swagger2会有80%的幸运儿被拦在这里,然后寻常的百度,解决方案有
(1).把@EnableSwagger2注解加在主启动类
(2).主启动类加上@ComponentScan(“swagger配置类所在包”)
(3).将WebSecurityConfig与ScheduleConfig置于同一路径
(4).替换为低版本的swagger如2.6.1
如果以上方案可以解决您的问题,那么恭喜您,错过了后边的深坑。。
二、如果以上方案没有解决您的问题,那么请继续往下看:
上述图出现一般会伴随以下情况
(1)后端会一直被循环调用
(2)如果你的日志级别配置了org.springframework.security级别为DEBUG的话
您还会看到日志中访问swagger2路径一直出现null
首先回答第一个问题出现的原因:这个是由于http://localhost:8090/demo/swagger-ui.html 这个地址一直未关闭,所以一直在请求后端,所以一直在循环调用。那么我们测试的时候,如果报了这个错的话,记得及时将页面关闭掉,防止电脑cpu飙升哦。
第二个问题就比较重要了,也是我们解决问题的关键。报错日志出现null/swagger-ui.html路径,是因为mvc没有匹配到对应静态资源,所以我们需要在webwvc添加匹配静态资源 ,springboot配置如下
@Configuration
@EnableWebMvc
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("swagger-ui.html")
.addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
}
}
解决完路径null异常的话,问题也就解决了一大半了。
三、一般下一个坑就是403没有权限了,权限配置则比较简单,网上一搜全都是答案
http.authorizeRequests()
.antMatchers("/v2/**", "/configuration/ui", "/swagger-resources/**", "/configuration/security", "/swagger-ui.html", "/webjars/**").permitAll();
四、以上问题方法试过以后,大多是可以解决掉问题的,如果还是不能够解决问题,这个时候尝试 降级处理,版本2.6.1。
楼主就是坚持到最后一个坑的男人。。。
五、总结
1.出现问题不要着急百度,不一定与你的问题完全相符
2.没有任何日志现象时,调高日志级别,查看报错信息
大家如果有什么swagger2配置踩坑记欢迎留言分享!