如何在 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
方法(包含单个路由),并指定其中使用的 beanClass
和 beanMethod
。但是,在您的情况下,单个方法上有多个路由,因此您还必须使用 @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)?