SpringBoot--Swagger2配置(解决404报错)

在 spring boot 项目中配置 Swagger2 突然出现了 404 报错, 究其原因,是因为 MVC 没有找到 swagger-ui 包中的 swagger-ui.html 文件;  以下就是 swagger2 的配置,及解决方案:

一, 引入Maven :

        <dependency> <!-- API -->
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.7.0</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.7.0</version>
        </dependency>

二, 编写配置文件 :

package com.gy.fast.common.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import io.swagger.annotations.ApiOperation;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

/**
 * Swagger2 API配置
 * @author geYang
 * @date 2018-05-11
 */
@Configuration
@EnableSwagger2
public class SwaggerConfig {
    @Bean
    public Docket createRestApi() {
        System.out.println("======  SWAGGER CONFIG  ======");
        return new Docket(DocumentationType.SWAGGER_2)
            .apiInfo(apiInfo()).select()
            .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
            .paths(PathSelectors.any())
            .build();
    }
    
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
            .title("Fast 疾速开发  RESTful APIs")
            .description("快速上手,快速开发,快速交接")
            .contact(new Contact("geYang", "https://my.oschina.net/u/3681868/home", "572119197@qq.com"))
            .version("1.0.0")
            .build();
    } 

}

到目前已经配置完成, 启动项目访问: http://localhost:${port}/${context-path}/swagger-ui.html

如果访问成功,则不需要配置,如果访问失败, 报错404, 则进行下面配置:

三, 解决404报错:

package com.gy.fast.common.config;

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

import java.util.List;

/**
 * WebMvc配置
 * @author geYang
 * @date 2018-05-14
 */
@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/statics/**").addResourceLocations("classpath:/statics/");
        // 解决 SWAGGER 404报错
        registry.addResourceHandler("/swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
    }

    @Override
    public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
       
    }

}

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

 

转载于:https://my.oschina.net/u/3681868/blog/1813712

### Spring Boot 集成 Swagger2 常见问题及解决方案 #### 1. 版本兼容性问题 对于Spring Boot 2.6及以上版本集成Swagger3可能出现冲突的情况,一种方法是将Spring Boot版本降级至2.6以下。然而更推荐的做法是在`application.yml`中加入特定配置来保持高版本的同时解决问题: ```yaml spring: mvc: pathmatch: matching-strategy: ant_path_match器 ``` 此设置可以有效规避路径匹配策略带来的不兼容问题[^1]。 #### 2. 启用 Swagger 功能 为了使Swagger能够正常工作,在主应用程序类上需添加注解以激活该特性。具体来说就是使用`@EnableSwagger2`这一来自`springfox.documentation.swagger2.annotations`包下的注解来开启Swagger2的支持[^2]。 另外,通过条件表达式的运用可以在不同的运行环境中灵活控制Swagger的功能开关。例如利用`@ConditionalOnExpression("${swagger.enable:true}")`实现基于配置项的状态切换,即只有当应用属性中的`swagger.enable`被设为`true`时才会加载并初始化与Swagger有关的服务组件[^3]。 #### 3. 实体模型和控制器层的调整 为了让API文档更加清晰易懂,建议对业务逻辑层面的对象以及对应的RESTful接口进行适当标注。比如给实体字段加上描述性的标签,或是为操作方法指定HTTP请求方式、参数说明等内容。这不仅有助于提高开发效率,也能让第三方开发者更容易理解系统的交互细节。 #### 4. 访问UI页面失败 完成上述步骤之后重启服务,并尝试访问形如`http://localhost:<port>/swagger-ui.html`这样的URL地址查看自动生成的在线帮助文档。如果遇到无法打开网页的问题,则可能是由于端口占用或其他网络因素引起;此时应检查服务器状态日志排查可能存在的异常情况[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值