Java 拦截器配置swagger,解决No mapping for GET /web/swagger-ui.html问题
·
原因是在项目里自定义了拦截器,继承了WebMvcConfigurationSupport这个类,在配置文件.properties里配置了server.servlet.context-path=/web,正常在pom文件里引用了swagger依赖,
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
重启项目,浏览器 http://localhost:端口号/web/swagger-ui.html 这样是不能访问的,一方面是被拦截器拦截啦,另一个是没有配置映射关系,是找不到swagger-ui.html这个页面的。经过查找资料,正确写法如下,红色是swagger配置重点,写的不好,大家多指教
@Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport {
@Autowired
private BossAuthIntercepter bossAuthIntercepter;
// 配置映射关系
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry)
{
registry.addResourceHandler("/**")
.addResourceLocations("classpath:/static/"); registry.addResourceHandler("/swaggerui.html")
.addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
super.addResourceHandlers(registry);
}
// 配置拦截规则
@Override
protected void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(bossAuthIntercepter)
.addPathPatterns("/**") //拦截所有请求
.excludePathPatterns("/error")
.excludePathPatterns("/swagger-resources/**", "/webjars/**", "/v2/**", "/swagger-ui.html/**");
}
}
BossAuthIntercepter类是自己定义的拦截规则,在这里用不上,可以去掉。
ResourceHandlerRegistry类用于保存服务静态资源图片,css文件或者其他文件的资源处理器 (resource handler)的注册信息
InterceptorRegistry类是拦截器,用于拦截访问的地址。
配置后,重启项目,浏览器登入http://localhost:端口号/web/swagger-ui.html,就可以访问啦

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)