无法再使用 spring webflux 访问 swagger UI

Abd*_*ran 6 swagger-ui spring-boot spring-webflux springdoc springdoc-openapi-ui

我的 springboot webflux 应用程序正在运行,我能够通过 url 访问 swagger ui:

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

注意:对于我来说,Tomcat 使用端口初始化:8080 (http)

POM 包含以下依赖项

      <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.5</version>
        <relativePath/> <!-- lookup parent from repository -->
     </parent>

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

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-webflux</artifactId>
        </dependency>
Run Code Online (Sandbox Code Playgroud)

我的主要java类如下

@OpenAPIDefinition(info = @Info(title = "APIs", version = "1.0", description = "Documentation OHM APIs v1.0"))
public class ReactiveApplication {

  public static void main(String[] args) {
    SpringApplication.run(ReactiveApplication.class, args);
  }

}
Run Code Online (Sandbox Code Playgroud)

突然之间,我无法再在之前工作的同一网址上访问 webflux swagger。

出现以下错误:

2023-01-05 13:49:36,906 WARN  [http-nio-8080-exec-9] o.s.web.servlet.PageNotFound.noHandlerFound: No mapping for GET /webjars/swagger-ui/index.html
2023-01-05 13:49:36,907 WARN  [http-nio-8080-exec-9] o.s.web.servlet.PageNotFound.handleNoHandlerFoundException: No handler found for GET /webjars/swagger-ui/index.html
2023-01-05 13:49:36,907 WARN  [http-nio-8080-exec-9] o.s.w.s.m.s.DefaultHandlerExceptionResolver.logException: Resolved [org.springframework.web.servlet.NoHandlerFoundException: No handler found for GET /webjars/swagger-ui/index.html]

Run Code Online (Sandbox Code Playgroud)

谁能帮助我了解现在该怎么做。默认情况下可以在哪个路径访问webflux swagger?

我还尝试了以下网址来访问 swagger 但没有成功。

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

http://localhost:8080/swagger-ui

Abd*_*ran 6

我得到了解决方案。问题在于 springboot starter 和 swagger 的依赖组合运行良好。

用于与 springboot 进行 swagger 集成

如果我们使用低于 3 的 SpringBoot 版本,则 springdoc 1.6.14/1.6.13 效果很好。所以我们需要为 swagger 添加以下两个依赖

https://springdoc.org/

        <dependency>
            <groupId>org.springdoc</groupId>
            <artifactId>springdoc-openapi-webflux-ui</artifactId>
            <version>1.6.14</version>
        </dependency>
        <dependency>
            <groupId>org.springdoc</groupId>
            <artifactId>springdoc-openapi-webflux-core</artifactId>
            <version>1.6.14</version>
        </dependency>
Run Code Online (Sandbox Code Playgroud)

如果我们使用 SpringBoot 版本 3 或 3 以上,则 springdoc-openapi V2 效果很好。对于 swagger,我们需要添加以下一个依赖项

https://springdoc.org/v2/

<dependency>
      <groupId>org.springdoc</groupId>
      <artifactId>springdoc-openapi-starter-webflux-ui</artifactId>
      <version>2.0.2</version>
   </dependency>
Run Code Online (Sandbox Code Playgroud)