当前位置: 首页 > 知识库问答 >
问题:

如何在spring webflux RouterFunctionendpoint中使用OpenApi注释?

闽康安
2023-03-14

我目前正在做一个项目,在这个项目中我使用了spring functional web编程。我通常在restController中使用swagger 2的注释,但是对于函数式web编程,我找不到在哪里!告诉应用程序搜索endpoint(如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>

结果是:

共有3个答案

宇文兴言
2023-03-14

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

韦泳
2023-03-14

设置

springdoc.api-docs.enabled=false

这将跳过API注释的类路径扫描(springfox)。(OAS3在v3中替换了这些)并将它们替换为规范文件中的读取(json/yaml)。

将留档放在Spec文件中,因为可以从中生成任意数量的客户端。从遗留代码开始的最简单方法是复制由springfox生成的/api-docs/文件。

您可以转到编辑器.swagger。io,加载版本2的yaml并将其转换为版本3,如果springfox仍然不这样做。然后使用yaml文件。(这是一个合同预先规范,是有原因的。)

屠嘉勋
2023-03-14

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

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

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

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

 类似资料:
  • 我正在生成Restendpoint,包括向生成的代码添加Openapi/Swagger注释。 虽然它可以很好地处理基本类型,但我在自定义类方面有一些问题。 现在我有很多自定义类的重复模式条目(使用@Schema(实现=MyClass.class)),但至少需要的信息在那里。然而,我想找到一种方法来删除重复的模式条目,同时保留附加信息。 在一个讨论$ref和缺乏兄弟属性的github问题上,我发现了

  • 我正在使用从以下依赖项导入的Swagger/OpenAPIV3注释创建应用程序的API描述: 其中一个批注是批注,它接受名为的属性,该属性允许字符串数组: 现在,我想使用在枚举类上构造的自定义方法,该方法返回允许的字符串数组,因此不需要在每次向枚举添加类型时添加该方法。以便我们可以这样使用它: 现在这是无法编译的,因为在执行注释时不知道该方法。是否有这样的解决方案允许在SwaggerV3注释属性值

  • 我试图在OpenAPI 3.0规范中创建一个响应链接。更具体地说,我想提供我的一个响应和其他可用操作之间的已知关系(参见。链接对象)。 在我的SpringBoot项目中,我使用Springdoc(版本:1.3.9)生成API文档。根据@ApiResponse#links文档,我已尝试使用以下endpoint代码实现我的目标: 不幸的是,我看不到任何结果在招摇过市的用户界面,但“没有链接”的描述。

  • 问题内容: 我没有用Java 获得注释。如果它自动为您继承方法,那么如果我需要以自己的方式实现该方法,那又如何呢? 怎么知道我的实现方式? 另外,据说如果我不想使用它,而是以一种老式的Java方式执行它,则必须实现类的,和方法以及类的注释类型方法。 这是为什么? 即使我不知道注释和以前运行良好的程序,我也从未实现过。 请有人从头开始向我解释一下。 问题答案: 只是没有误会:您确实要询问java.l