千家信息网

Swagger2配置方式以及如何解决404报错

发表于:2024-12-03 作者:千家信息网编辑
千家信息网最后更新 2024年12月03日,Swagger2配置方式以及如何解决404报错,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Swagger2配置在spring bo
千家信息网最后更新 2024年12月03日Swagger2配置方式以及如何解决404报错

Swagger2配置方式以及如何解决404报错,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

    Swagger2配置

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

    Swagger2的配置步骤如下:

    一、引入依赖

    pom.wml

                io.springfox            springfox-swagger2            2.9.2                            io.springfox            springfox-swagger-ui            2.9.2        

    二、编写配置文件

    package io.github.talelin.latticy.config;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@EnableSwagger2public 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  basePackage(final String basePackage) {        return input -> declaringClass(input).transform(handlerPackage(basePackage)).or(true);    }    private static Function , 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> declaringClass(RequestHandler input) {        return Optional.fromNullable(input.declaringClass());    }}

    至此已经配置完成,启动项目访问 http://localhost: p o r t / {port}/ port/{context-path}/swagger-ui.html

    如果访问成功则不需要继续下面的配置,如果访问失败出现404报错,则进行下面的配置

    三、解决404报错

    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;@Configurationpublic class WebMvcConfig implements WebMvcConfigurer {    @Override    public void addResourceHandlers(ResourceHandlerRegistry registry) {        registry.addResourceHandler("/**").addResourceLocations("classpath:/static/");        registry.addResourceHandler("swagger-ui.html")                .addResourceLocations("classpath:/META-INF/resources/");        registry.addResourceHandler("/webjars/**")                .addResourceLocations("classpath:/META-INF/resources/webjars/");    }}

    原理就是帮助MVC找到 swagger-ui.html 及其 CSS,JS 对应的文件

    swagger配置好后仍然404问题

    记录一下 学习spring boot 遇到的问题

    swagger2

    @Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {    registry.addResourceHandler("swagger-ui.html")            .addResourceLocations("classpath:/META-INF/resources/");    registry.addResourceHandler("/webjars/**")            .addResourceLocations("classpath:/META-INF/resources/webjars/");}

    swagger 添加此配置之后仍然404

    1.有可能是 有其他类 实现了 WebMvcConfigurer 或者 继承了 WebMvcConfigurationSupport

    导致的WebMvcConfigurationSupport 在继承的时候 没有重写addResourceHandlers

    2.spring boot 启动模式有三种 如果默认没有改动的话 应该是SERVLET

    • NONE

    • SERVLET

    • REACTIVE

    注意查看 只有SERVLET 会加载webmvc配置

    关于Swagger2配置方式以及如何解决404报错问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。

    配置 问题 方式 文件 帮助 接口 方法 更多 面的 项目 解答 易行 成功 简单易行 内容 分隔符 原因 原理 只有 小伙 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网络安全工作议事例会制度 模拟网络安全软件 51网络安全高级工程师6 自有数据库查询 电脑自动更新数据库文件可以删吗 北京电脑软件开发哪家专业 云服务器需要什么样的配置 并行数据库与关系数据库 什么为特别重大网络安全事件 西藏生鲜园区配送软件开发 服务器本地网络与客户端冲突 为什么今天光遇服务器爆满 db2数据库怎么使用 在线聊天数据库设计 旧服务器变nas服务器 网络安全检查清查 松江区网络技术咨询服务价格对比 aix服务器建立数据库 rac是什么数据库的技术 七台河电子书软件开发公司排名 软件开发过程有哪些内容 保定麦嘉网络技术有限公司 服务器主板坏了如何读硬盘数据 数据库身份证导出脱敏 苹果13服务器错误怎么解决 计算机网络技术的符号 数据库的正则表达式 数据库两段锁的含义 股票软件开发股票软件开发 数据库还原一致性错误
    0