栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringBoot2.0集成Swagger2访问404的解决操作

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringBoot2.0集成Swagger2访问404的解决操作

最近使用最新的SpringBoot2.0集成Swagger2的时候遇到一个问题,集成之后打开Swagger页面的时候出现404,后台提示找不到swagger-ui的页面。

于是我看了下项目依赖swagger的结构:

可以看到 swagger-ui.html 在meta-INF/resources目录下,所以我们需要手动的将静态资源路径指向这里,在java中配置为:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.documentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;


@Configuration
@EnableSwagger2
public class SwaggerConfig extends WebMvcConfigurationSupport {

  @Bean
  public Docket createRestApi() {
    return new Docket(documentationType.SWAGGER_2)
 .apiInfo(apiInfo())
 .select()
 .apis(RequestHandlerSelectors.basePackage("com.xqnode.controller"))
 .paths(PathSelectors.any())
 .build();
  }

  private ApiInfo apiInfo() {
    return new ApiInfoBuilder()
 .title("接口总览")
 .description("测试")
 .version("1.0")
 .build();
  }

  
  @Override
  protected void addResourceHandlers(ResourceHandlerRegistry registry) {
    // 解决静态资源无法访问
    registry.addResourceHandler("/**").addResourceLocations("classpath:/static/");
    // 解决swagger无法访问
    registry.addResourceHandler("/swagger-ui.html").addResourceLocations("classpath:/meta-INF/resources/");
    // 解决swagger的js文件无法访问
    registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/meta-INF/resources/webjars/");

  }
}

在swagger的配置类中继承WebMvcConfigurationSupport,实现addResourceHandlers方法,设置静态资源可访问。

设置完成后重启项目,就可以通过 http://localhost:8080/swagger-ui.html 正常访问了。

===== 2019.03.13更新 =====

有的同学说配置swagger后静态资源目录无法访问,我自己试了下,确实访问不了。原来的配置是:

@Override
  protected void addResourceHandlers(ResourceHandlerRegistry registry) {
    // 解决swagger无法访问
    registry.addResourceHandler("/**").addResourceLocations("classpath:/meta-INF/resources/").setCachePeriod(0);
  }

这里是将所有的请求都指向了meta-INF/resources/目录,显然是不对的,会导致项目的其他静态文件目录无法正常访问,于是做了修改:

 @Override
  protected void addResourceHandlers(ResourceHandlerRegistry registry) {
    // 解决静态资源无法访问
    registry.addResourceHandler("/**")
 .addResourceLocations("classpath:/static/");
    // 解决swagger无法访问
    registry.addResourceHandler("/swagger-ui.html")
 .addResourceLocations("classpath:/meta-INF/resources/");
    // 解决swagger的js文件无法访问
    registry.addResourceHandler("/webjars/**")
 .addResourceLocations("classpath:/meta-INF/resources/webjars/");
  }

测试一下:

在resource的static文件夹下新建index.html

启动项目访问 http://localhost:8080/index.html

访问正常,接下来再访问swagger:

也是正常的。

以上这篇SpringBoot2.0集成Swagger2访问404的解决操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持考高分网。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/131379.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号