Springboot整合Swagger2后访问swagger-ui.html 404报错

这篇具有很好参考价值的文章主要介绍了Springboot整合Swagger2后访问swagger-ui.html 404报错。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在spring boot项目中配置Swagger2,配置好了但是访问确实404,SwaggerConfig中的注入方法也执行了还是访问不到页面。究其原因是MVC没有找到swagger-ui包中的swagger-ui.html文件和css样式、js等文件。

解决⽅案:

⽅案1. 降低Swagger2的使用版本

⽅案2. 使⽤配置⼀下+swagger-ui.html+指定的css⽬录。文章来源地址https://www.toymoban.com/news/detail-503255.html

package io.github.talelin.latticy.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
    @Override
    public 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/");
    }
}

Swagger2的配置步骤如下:

一、引入依赖

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.9.2</version>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.9.2</version>
</dependency>

二、编写配置文件

import com.google.common.base.Function;
import com.google.common.base.Optional;
import com.google.common.base.Predicate;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import springfox.documentation.RequestHandler;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
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 {

    // 定义分隔符
    private static final String splitor = ";";

    @Bean
    Docket docket() {
        System.out.println("Swagger===========================================");

        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(basePackage("io.github.talelin.latticy.controller.v1"))			//这里采用包扫描的方式来确定要显示的接口
                // .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))                         //这里采用包含注解的方式来确定要显示的接口
                .paths(PathSelectors.any())
                .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("CMS")
                .description("电商小程序 CMS Api文档")
                .termsOfServiceUrl("https://blog.csdn.net/xfx_1994")
                .version("1.0")
                .build();
    }

    public static Predicate <RequestHandler> basePackage(final String basePackage) {
        return input -> declaringClass(input).transform(handlerPackage(basePackage)).or(true);
    }

    private static Function <Class<?>, Boolean> handlerPackage(final String basePackage)     {
        return input -> {
            // 循环判断匹配
            for (String strPackage : basePackage.split(splitor)) {
                boolean isMatch = input.getPackage().getName().startsWith(strPackage);
                if (isMatch) {
                    return true;
                }
            }
            return false;
        };
    }

    private static Optional<? extends Class<?>> declaringClass(RequestHandler input) {
        return Optional.fromNullable(input.declaringClass());
    }

}

如果报如下错误:加上文章开头的配置即可,SwaggerConfig记得实现WebMvcConfigurer接口才可以覆盖实现默认的配置的addResourceHandlers方法Springboot整合Swagger2后访问swagger-ui.html 404报错

到了这里,关于Springboot整合Swagger2后访问swagger-ui.html 404报错的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SpringBoot 整合Swagger2

    Swagger是一套开源工具和规范,用于设计、构建和文档化 RESTful Web 服务。它允许开发人员定义API的各个方面,并生成易于理解的API文档和交互式API探索界面。同时,Swagger还提供代码生成工具,可自动生成与API交互的客户端和服务器端代码,提高开发效率。 官网:https://swagge

    2024年04月27日
    浏览(32)
  • java 整合 swagger-ui 步骤

    1.在xml 中添加Swagger 相关依赖 2.配置Swagger 3.启动项目,访问 Swagger UI 访问地址:http://localhost:xxx/swagger-ui.html出现下面界面则配置成功 4.更改界面风格 4.1 添加依赖 4.2 启动项目,并访问 访问地址:http://localhost:xxxx/doc.html 4.3效果 5.Swagger 注解 6.遇见的问题

    2024年02月09日
    浏览(49)
  • Java技术-接口文档-Swagger2&Swagger3&接口文档UI整合

    目录 一、Swagger2完整用法 1.POM依赖 2.接口类 3.实现类 4.托管静态资源 5.接口文档配置 6.生产环境关闭接口文档 7.Swagger3页面效果 二、Swagger3完整用法 三、Swagger整合Knife4jUi 1.POM依赖 2.接口类 3.实现类 4.托管静态资源 5.接口文档配置 6.生产环境关闭接口文档 四、注释和参数讲解

    2024年02月16日
    浏览(48)
  • springboot 2.7版本整合swagger2代码实现

    1.导入swagger2依赖 2.添加swagger配置类 3.启动项目就这么easy  4.easy个屁,报错了,抛出了异常信息:   Failed to start bean \\\'documentationPluginsBootstrapper\\\'; nested exception is java.lang.NullPointerException: Cannot invoke \\\"org.springframework.web.servlet.mvc.condition.PatternsRequestCondition.getPatterns() 5.发现这是sp

    2024年02月09日
    浏览(43)
  • localhost:8080/swagger-ui.html 访问不到 addResourceHandlers springmvc资源处理请求放行swagger

    无法访问swagger-ui.html 在swagger2.0+中可以用如下配置 解决办法:SpringMVC配置文件修改如下 关键是加入下面这一段 原因,为什么要这样? classpath:/META-INF/resources/ 映射到springfox-swagger-ui-2.9.2.jar!META-INFresources下的文件(包含了swagger-ui.html) classpath:/META-INF/resources/webjars/映射到s

    2024年02月15日
    浏览(47)
  • Springboot线上环境彻底关闭Swagger-UI

    Springboot线上环境彻底关闭Swagger-UI 1.SwaggerConfig使用@Profile排除线上环境其他环境生效 2.创建一个控制类使用@Profile仅线上环境生效,使访问swagger-ui.html返回404 通过这种方式可以彻底关闭线上环境访问swagger-ui.html直接返回404

    2024年02月16日
    浏览(46)
  • Springboot 实践(4)swagger-ui 测试controller

            前文项目操作,完成了项目的创建、数据源的配置以及数据库DAO程序的生成与配置。此文讲解利用swagger-ui界面,测试生成的数据库DAO程序。目前,项目swagger-ui界面如下:         以”用户管理”为例,简单讲述swagger-ui测试数据库dao服务程序。点击“用户管理

    2024年02月12日
    浏览(43)
  • swagger 3.0.0 集成 springboot 2.6+ 生成doc.html 和swagger-ui

    1.项目中引入pom.xml依赖 特别说明: doc.html模式 swagger-bootstrap-ui只支持Swagger 2 knife4j是swagger-bootstrap-ui的升级版,支持Swagger 3。 2.创建Swagger2Config配置类 3.启动类输出文档地址 项目运行后 控制台输出log见下图 点击任意文档链接都可以进入对应的文档

    2024年02月12日
    浏览(63)
  • 关于Springboot集成swagger2出现的swagger-resouces和ui请求的404问题

    本项目集成的是增强版的Swagger文档,使用的增强版的UI com.github.xiaoymin 按照上面的配置,在本地测试效果是正常的 在红色标记的地方是正常显示的,但是按照这个配置打war包部署到服务器或者本地的tomcat中就会出现404的现象。 出现上面的这种情况时,看过很多网上的帖子说

    2024年04月17日
    浏览(33)
  • Springboot配置Swagger展示API文档并进行接口测试(doc.html、swagger-ui.html)

    三、创建一个测试接口 http://localhost:8080/doc.html http://localhost:8080/swagger-ui.html

    2024年02月10日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包