天天看点

springboot集成swagger2深坑

记录一次swagger2踩坑记,网上资料杂乱而不完整,自己踩的坑还算比较多,记录下自己的解决历程

一、首次来看看遇到的第一个坑,如下图:

springboot集成swagger2深坑

最常见错误

可以说配置swagger2会有80%的幸运儿被拦在这里,然后寻常的百度,解决方案有

(1).把@EnableSwagger2注解加在主启动类

(2).主启动类加上@ComponentScan(“swagger配置类所在包”)

(3).将WebSecurityConfig与ScheduleConfig置于同一路径

(4).替换为低版本的swagger如2.6.1

如果以上方案可以解决您的问题,那么恭喜您,错过了后边的深坑。。

二、如果以上方案没有解决您的问题,那么请继续往下看:

上述图出现一般会伴随以下情况

(1)后端会一直被循环调用

(2)如果你的日志级别配置了org.springframework.security级别为DEBUG的话

您还会看到日志中访问swagger2路径一直出现null

springboot集成swagger2深坑

首先回答第一个问题出现的原因:这个是由于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配置踩坑记欢迎留言分享!

继续阅读