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

Tin*_*yOS 6 spring-boot openapi spring-webflux

我目前正在开发一个使用 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);
  }
}
Run Code Online (Sandbox Code Playgroud)

配置类:

@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();
    }

}
Run Code Online (Sandbox Code Playgroud)

依赖项:

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

结果 :

在此输入图像描述

Moe*_*Moe 9

自 1.3.8(5 月初)起支持功能端点。请参阅GitHub上的版本。

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

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

看来 springdoc-openapi 的当前实现只允许手动添加文档。