原因是在项目里自定义了拦截器,继承了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,就可以访问啦

Logo

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

更多推荐