当前位置: 首页 > 编程笔记 >

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

何灼光
2023-03-14
本文向大家介绍SpringBoot2.0集成Swagger2访问404的解决操作,包括了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;

/**
 * @author xiaqing
 */
@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();
  }

  /**
   * 防止@EnableMvc把默认的静态资源路径覆盖了,手动设置的方式
   *
   * @param registry
   */
  @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的解决操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍Spring集成webSocket页面访问404问题的解决方法,包括了Spring集成webSocket页面访问404问题的解决方法的使用技巧和注意事项,需要的朋友参考一下 由于工作需求,需要搭建一个平台无关的web项目,用于收集其他系统的bug和建议。考虑到跨域和后期的在线交流的扩展,决定采用webSocket,加上系统本身是基于Spring的,就照着Spring的官方文档搭建了一

  • 本文向大家介绍React 使用browserHistory项目访问404问题解决,包括了React 使用browserHistory项目访问404问题解决的使用技巧和注意事项,需要的朋友参考一下 最近项目里面用到了React但是发布到iis站点之后,路由地址 刷新访问直接404错误。查阅资料之后发现是iis缺少配置URL重写 的问题导致的。下面我们来图形化配置,简单的配置下IIS 打开IIS使用

  • 本文向大家介绍springboot2.0集成rabbitmq的示例代码,包括了springboot2.0集成rabbitmq的示例代码的使用技巧和注意事项,需要的朋友参考一下 安装rabbitmq 简介: rabbitmq即一个消息队列,主要用来实现应用程序的异步和解耦,消息缓冲,消息分发的作用. 由于rabbitmq依赖于erlang语言,所以先安装erlang: 添加erlang soluti

  • 本文向大家介绍SpringBoot集成Swagger2实现Restful(类型转换错误解决办法),包括了SpringBoot集成Swagger2实现Restful(类型转换错误解决办法)的使用技巧和注意事项,需要的朋友参考一下 pom.xml增加依赖包 编写swapper2配置类 Controller内使用 如果上诉代码没有写paramType = “path” 会提示类型转换String con

  • 本文向大家介绍Springboot中集成Swagger2框架的方法,包括了Springboot中集成Swagger2框架的方法的使用技巧和注意事项,需要的朋友参考一下 摘要:在项目开发中,往往期望做到前后端分离,也就是后端开发人员往往需要输出大量的服务接口,接口的提供方无论是是Java还是PHP等语言,往往会要花费一定的精力去写接口文档,比如A接口的地址、需要传递参数情况、返回值的JSON数据格式

  • 本文向大家介绍解决Spring Boot 正常启动后访问Controller提示404问题,包括了解决Spring Boot 正常启动后访问Controller提示404问题的使用技巧和注意事项,需要的朋友参考一下 问题描述   今天重新在搭建Spring Boot项目的时候遇到访问Controller报404错误,之前在搭建的时候没怎么注意这块。新创建项目成功后,作为项目启动类的Applicat