如何在 spring-webflux RouterFunction 端点中使用 OpenApi 注释?

Posted

技术标签:

【中文标题】如何在 spring-webflux RouterFunction 端点中使用 OpenApi 注释?【英文标题】:How to use OpenApi annotations in spring-webflux RouterFunction endpoints? 【发布时间】:2020-06-12 22:05:30 【问题描述】:

我目前正在从事一个使用 Spring 功能 Web 编程的项目。我通常在 restController 中使用 swagger 2 的注释,但是对于功能性 Web 编程,我找不到在哪里!告诉应用程序搜索端点(如 Docket 中的 basepackage)并在 html 页面中加载 swagger 的地方。 这是我的代码:

@Configuration
public class RouterClient

@Bean
public RouterFunction<ServerResponse> routes(ClientHandler client)
  return route(GET("/api/client"), client::findAll)
      .andRoute(POST("/api/client"),client::add);
  

配置类:

@Configuration
public class OpenApiConfiguration

  @Bean
    public GroupedOpenApi groupOpenApi() 
        String paths[] = "/api/**";
        String packagesToscan[] = "com.demo.client";
        return GroupedOpenApi.builder().setGroup("groups").pathsToMatch(paths).packagesToScan(packagesToscan)
                .build();
    


依赖关系:

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

结果:

【问题讨论】:

【参考方案1】:

从 1.3.8(5 月初)开始支持功能端点。请参阅GitHub 上的发布。

看看这个:https://springdoc.org/#spring-webfluxwebmvc-fn-with-functional-endpoints

在 Swagger UI 上查看端点的最简单方法是将 @RouterOperation 注释添加到 RouterFunction 方法(包含单个路由),并指定其中使用的 beanClassbeanMethod。但是,在您的情况下,单个方法上有多个路由,因此您还必须使用 @RouterOperations 注释。这些案例在上面的链接中有详细记录。

目前springdoc-openapi的实现似乎只允许手动添加文档。

【讨论】:

更新了该部分的直接链接:springdoc.org/…【参考方案2】:

https://springdoc.org/ 你需要 springdoc-openapi-webflux-ui 和 @RouterOperation。

【讨论】:

【参考方案3】:

带有功能端点的spring-webflux,将在未来的版本中提供

【讨论】:

以上是关于如何在 spring-webflux RouterFunction 端点中使用 OpenApi 注释?的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有 spring-boot 的情况下在 spring-webflux 中加载配置?

如何记录 spring-webflux WebClient 请求 + 响应详细信息(正文、标头、elasped_time)?

Spring-WebFlux使用,一文带你从0开始学明白Spring-WebFlux,学明白响应式编程

spring-webflux 应用启动失败

spring-webflux 中处理错误的正确方法是啥

将 spring-webflux 微服务切换到 http/2 (netty)