突然 Springfox Swagger 3.0 无法与 spring webflux 一起使用

问题描述 投票:0回答:8

几天前,应用程序正在与 Springfox Swagger 3.0 配合使用。突然它停止工作了。一周前创建的 Jar 文件仍然可以工作,但是现在当我们尝试构建新的 Jar 文件时,即使没有任何代码/库更改,该文件也无法工作。我什至提到了以下网址,但仍然面临问题。

swagger-ui 和 spring webflux 出现 404 错误

下面给出我的配置:

POM文件:

<properties>
    <java.version>1.8</java.version>
    <springfox.version>3.0.0-SNAPSHOT</springfox.version>
    <spring.version>2.3.1.RELEASE</spring.version>
</properties>
<repositories>
    <repository>
        <id>spring-libs-milestone</id>
        <name>Spring Milestone Maven Repository</name>
        <url>http://oss.jfrog.org/artifactory/oss-snapshot-local/</url>
    </repository>
</repositories>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-webflux</artifactId>
    </dependency>
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <version>${springfox.version}</version>
    </dependency>
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-spring-webflux</artifactId>
        <version>${springfox.version}</version>
    </dependency>
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger-ui</artifactId>
        <version>${springfox.version}</version>
    </dependency>
</dependencies>

配置文件:

@Configuration
@EnableSwagger2WebFlux
public class SwaggerConfiguration implements WebFluxConfigurer {

    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(new ApiInfoBuilder()
                        .description("My Reactive API")
                        .title("My Domain object API")
                        .version("1.0.0")
                        .build())
                .enable(true)
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.reactive.controller"))
                .paths(PathSelectors.any())
                .build();

    }

    @Override
    public 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 错误。

http://localhost:8080/swagger-ui.html

有人可以帮我解决这个问题吗?预先感谢。

spring-boot swagger swagger-ui spring-webflux springfox
8个回答
67
投票

该实现最近发生了变化(请参阅从早期快照迁移以获取对此的简短更新)。

现在,UI 可在

/swagger-ui
端点(不是
/swagger-ui.html
)下使用。

您还应该删除

@EnableSwagger2WebFlux
注释和
addResourceHandlers()
方法,删除所有 springfox 依赖项并仅添加一个:

<dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-boot-starter</artifactId>
        <version>${springfox.version}</version>
</dependency>

20
投票

Springboot Rest API 中的 Swagger-3 入门

对于新项目

对于 Maven:-

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-boot-starter</artifactId>
    <version>3.0.0</version>
</dependency>

对于 Gradle:-

  implementation "io.springfox:springfox-boot-starter:<version>"

现在不需要像以前那样在 spring-boot 项目上进行额外的配置来激活

swagger
。如果尝试进行安全配置,则需要进行一些配置。请参考这篇文章

在 swagger 版本 3 中还删除

@EnableSwagger2
注释基本配置。

大多数用户尝试使用

{host}/swagger-ui.html
{host}/swagger-ui
查找 HTML swagger 文档文件,这些文件现已删除。

使用

{host}/swagger-ui/
查看HTML文档

这是 GitHub 上的示例项目链接 请参阅文档

io.springfox


6
投票

这对我来说就是这样。我正在使用 InteliJ IDEA、SpringBoot 和 Maven。

添加 Swagger 依赖项时:

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

它们是红色的,我根本无法添加它们。我尝试重新加载我的项目,生成源代码并更新文件夹,但我就是无法安装它。

然后我也添加了这个依赖:

    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-boot-starter</artifactId>
        <version>3.0.0</version>
    </dependency>

而且效果很好。另外,我在这里找到了问题的结论:

拜尔东

所以最后我在我的 pom.xml 文件中添加了这个:

    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-boot-starter</artifactId>
        <version>3.0.0</version>
    </dependency>
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <version>3.0.0</version>
    </dependency>
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger-ui</artifactId>
        <version>3.0.0</version>
    </dependency>

使用 Swagger 3.0 在浏览器中查看 Swagger UI 是

http://localhost:8080/swagger-ui/index.html

希望对某人有帮助:)


4
投票

仅使用此依赖项,而不使用 io.springfox 依赖项

<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>

现在不需要像以前那样在 spring-boot 项目上进行额外的配置来激活 swagger 了。

在 swagger 3.0.0 版本中删除 @Configuration 和 @EnableSwagger2 以及注释。

使用 {host}/swagger-ui/ 查看 HTML 文档,{host}/swagger-ui.html 或 {host}/swagger-ui 现在已删除。施耐德


2
投票

好吧,在阅读了所有内容并尝试了最多之后,我的 swagger-ui 就上线了 /swagger-ui/index.html#

https://github.com/springfox/springfox-demos/tree/master/boot-swagger


1
投票

如果您正在使用最新版本的 Spring Boot 应用程序,请按照以下步骤在您的应用程序中启用 swagger。

Step-1 : 将以下依赖项添加到 pom.xml 中

    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-boot-starter</artifactId>
        <version>3.0.0</version>
    </dependency>

Step-2:将此属性添加到 application.properties 文件中。

spring.mvc.pathmatch.matching-strategy = ANT_PATH_MATCHER

Step-3:启动 Spring-Boot 应用程序。

Strp-4:浏览此网址http://localhost:8080/swagger-ui/

注:1.

  • 除了上面给出的maven依赖之外,不需要任何其他swagger依赖。

  • 如果您使用旧版本的 swagger 并迁移到新版本,请执行上述步骤并从您的应用程序中删除以下注释,因为不再需要此注释。

     @EnableSwagger2WebFlux


0
投票

只需将以下依赖项添加到您的 pom.xml 中:

<dependency>
    <groupId>org.springdoc</groupId>
    <artifactId>springdoc-openapi-starter-webflux-ui</artifactId>
    <version>2.0.2</version>
</dependency>

这在 Spring boot 中工作

3.1.0

默认情况下,可以通过以下 URL 访问 Swagger UI:

/webjars/swagger-ui/index.html

0
投票

您需要做的就是:

这不再正确,您所需要的只是这个依赖项:

        <dependency>
        <groupId>org.springdoc</groupId>
        <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
        <version>2.2.0</version>
    </dependency>
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-boot-starter</artifactId>
        <version>3.0.0</version>
    </dependency>

然后前往:http://localhost:8080/swagger-ui/index.html

© www.soinside.com 2019 - 2024. All rights reserved.