突然 Springfox Swagger 3.0 不适用于 spring webflux

Pra*_*n D 20 swagger swagger-ui spring-boot springfox spring-webflux

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

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>
Run Code Online (Sandbox Code Playgroud)

配置文件:

@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/");
    }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试打开 swagger 页面时出现 404 错误。

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

有人可以帮我弄这个吗。提前致谢。

jrd*_*jrd 52

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

现在 UI 在/swagger-ui端点(不是/swagger-ui.html)下可用。

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

<dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-boot-starter</artifactId>
        <version>${springfox.version}</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

  • 顺便说一句,“/swagger-ui/”末尾的“/”是必要的。 (8认同)
  • 在 application.property 文件中尝试这个: springfox.documentation.swagger-ui.base-url=/mycontextpath (2认同)

Lal*_*K90 14

Springboot Rest API 中的 Swagger-3 入门

对于新项目

对于 Maven:-

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-boot-starter</artifactId>
    <version>3.0.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

对于 Gradle:-

  implementation "io.springfox:springfox-boot-starter:<version>"
Run Code Online (Sandbox Code Playgroud)

现在没有swagger像以前那样在 spring-boot 项目上激活额外的配置。如果尝试配置安全性,则有一些配置。请参考这篇文章

在 swagger 版本 3 中,@EnableSwagger2也删除了注释基础配置。

并且大多数用户尝试使用{host}/swagger-ui.html{host}/swagger-ui现在已删除的HTML swagger 文档文件。

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

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


use*_*049 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> 
Run Code Online (Sandbox Code Playgroud)

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

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

    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-boot-starter</artifactId>
        <version>3.0.0</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

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

拜尔东

所以最后我在我的 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>
Run Code Online (Sandbox Code Playgroud)

要使用 Swagger 3.0 在浏览器中查看 Swagger UI,请执行以下操作:

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

希望它对某人有帮助:)