【问题标题】:Default group in SpringdocSpringdoc中的默认组
【发布时间】:2022-10-18 07:04:32
【问题描述】:

有没有办法将所有未分组的控制器 api 分组到一个默认组,而不是专门定义一个带有排除的 GroupedOpenApi bean? 例如,如果我有一个控制器

@RestController
public class TestController {
    @GetMapping(value="/user")
    public String test() {
         return "user";
    }
    @GetMapping(value="/pet")
    public String test1() {
         return "pet";
    }
}

GroupedOpenApi/user

@Bean
public GroupedOpenApi userGroup() {
    return GroupedOpenApi.builder().group("user").pathsToMatch("/user").build();
}

这会为 url /v3/api-docs/user 正确生成 openapi json。现在我希望另一个/pet api 在默认组中可用,而无需专门为/pet 添加另一个GroupedOpenApi bean。那么有没有办法生成一个开箱即用的默认组,它将包含所有未使用任何GroupedOpenApi bean 过滤的未分组 api?或者添加另一个带有排除模式的GroupedOpenApi bean 是唯一的解决方案?

【问题讨论】:

    标签: springdoc


    【解决方案1】:

    我想知道同样的事情,但我没有在文档中找到任何提及默认组的内容。

    于是我浏览了springdoc的内部代码,发现了一个常量

     public static final String DEFAULT_GROUP_NAME = "springdocDefault";
    

    但是只有当我们指示它公开执行器端点时,它才会被 SpringDoc 使用

     springdoc.show-actuator=true
    

    查看类SpringdocActuatorBeanFactoryConfigurer,Springdoc 为执行器端点创建了一个专用组,并且它确实关心将所有其他端点分组到springdocDefault 中。

    该常量不在库的任何部分中使用。 IMO,除了执行器功能之外,一旦创建了一个组,开发人员就可以将其他端点分组到另一个组中。它看起来不是一个开箱即用的功能。

    因此,我认为如果您不想明确分组端点pet,那么您的第二个问题就是解决方案

    GroupedOpenApi.builder().group(DEFAULT_GROUP_NAME).pathsToExclude("/user")
    

    【讨论】:

      猜你喜欢
      • 2020-07-07
      • 2020-04-20
      • 2020-04-08
      • 2021-06-23
      • 1970-01-01
      • 2021-09-19
      • 2013-12-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多