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

Swagger OpenAPI 3.0-Springdoc-GroupedOpenApi不在SpringMVC中工作

松涵容
2023-03-14

我的应用程序是spingmvc而不是boot。

我正在使用springdoc openapi ui 1.4.4

另外,我在@configuration类中添加了以下导入:;

    org.springdoc.core.SpringDocConfigProperties.class, org.springdoc.core.SpringDocConfiguration.class, 
    org.springdoc.webmvc.core.SpringDocWebMvcConfiguration.class,
    org.springdoc.webmvc.core.MultipleOpenApiSupportConfiguration.class,
    org.springdoc.core.SwaggerUiConfigProperties.class, org.springdoc.core.SwaggerUiOAuthProperties.class,
    org.springdoc.webmvc.ui.SwaggerConfig.class, org.springdoc.core.CacheOrGroupedOpenApiCondition.class,
    org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration.class })

并实现如下所示的bean

@Bean
public GroupedOpenApi publicApi() {
    return GroupedOpenApi.builder()
            .group("user")
            .pathsToExclude("/api/v2/**", "/v2/**")
            .pathsToMatch("/api/v1/**", "/v1/**")
            .build();
}
@Bean
public GroupedOpenApi adminApi() {
    return GroupedOpenApi.builder()
            .group("admin")
            .pathsToExclude("/api/v1/**", "/v1/**")
            .pathsToMatch("/api/v2/**", "/v2/**")
            .build();
}

@Bean
public OpenAPI customOpenAPI() {
    return new OpenAPI()
        .components(new Components())
        .info(new Info()
            .title("titleI")
            .version("1.0.0"));
}

但是当我尝试http://localhost:8080/MyApp/v3/api-文档/用户

给我404。

但是我得到了http://localhost:8080/MyApp/v3/api-文档

它也进来http://www.onlykalu.com:81/MyApp/swagger-ui/index.html?configUrl=/MyApp/v3/api-docs/swagger-config

也没有定义下拉列表。

如果我加上

springdoc.group-configs[0].group=user
springdoc.group-configs[1].group=admin

申请。然后我得到

我做错了什么?

我需要导入任何其他类来获得组功能工作吗?

谢啦

共有1个答案

公孙英飙
2023-03-14

你的问题也在这里得到了回答:

  • https://github.com/springdoc/springdoc-openapi/issues/841

如前所述,您只需将bean定义放在一个专用的配置类中,并将其添加到springdoc openapi bean导入中,以便使用相同的机制加载bean。

这是正确的bean配置:

@Configuration
public class GroupsConfiguration {

    @Bean
    public GroupedOpenApi publicApi() {
        return GroupedOpenApi.builder().group("user").pathsToExclude("/api/v2/**").pathsToMatch("/api/v1/**").build();
    }

    @Bean
    public GroupedOpenApi adminApi() {
        return GroupedOpenApi.builder().group("admin").pathsToExclude("/api/v1/**").pathsToMatch("/api/v2/**").build();
    }

    @Bean
    public OpenAPI customOpenAPI() {
        return new OpenAPI().components(new Components()).info(new Info().title("Spring MVC REST API")
                .contact(new Contact().name("Rasika Kaluwalgoda")).version("1.0.0"));
    }

}

springdoc openapi与GroupsConfiguration一起导入:

@Configuration
@Import({ org.springdoc.core.SpringDocConfigProperties.class,
        org.springdoc.webmvc.core.MultipleOpenApiSupportConfiguration.class,
        org.springdoc.core.SpringDocConfiguration.class, org.springdoc.webmvc.core.SpringDocWebMvcConfiguration.class,
        SwaggerUiConfigParameters.class, SwaggerUiOAuthProperties.class,
        org.springdoc.core.SwaggerUiConfigProperties.class, org.springdoc.core.SwaggerUiOAuthProperties.class,
        org.springdoc.webmvc.ui.SwaggerConfig.class, GroupsConfiguration.class,
        org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration.class })
public class SwaggerConfig {

}
 类似资料:
  • 我最近把SpringFox换成了SpringDoc。 以前,我可以排除用于Swagger UI的路径,如下所示: 在上述情况下,将为path3和path5显示Swagger UI。 在使用SpringDoc时使用GroupedOpenAPI,我只看到了一种显式设置应该允许哪些路径的方法,例如。 我希望有一种更通用的方法,通过这种方法,我可以指定哪些路径不允许,因此,如果我添加更多的路径,它们将在默

  • 当使用定义API组时,参数列表中不存在添加到每个endpoint的公共参数集。下面是各自的代码 以及将标准头添加到所有endpoint的类 实际产量 预期产量 复制问题,克隆https://github.com/debargharoy/springdoc-test 变通办法 添加应用程序属性文件中要包含/排除的路径可以解决这个错误。但是代码级别的东西会很受欢迎。

  • 我很难让这个工作。我已经开始了一个工作的SpringBoot(v2.2.2)应用程序与一个工作@RestController。为了让springdoc工作,我在pom中包含了以下依赖项: 然后我建立并开始我的服务。然后我浏览到api文档endpoint,我得到: 我漏了一步吗?我假设在运行时它会扫描我的代码,找到@RestController,找到@刚需映射方法并从中生成api。 作为第二次尝试,

  • 是否有任何在Spring MVC中实现并通过Okta Saml验证的示例Web应用程序代码?在互联网上有关于springboot-okta示例的一切:(我没有找到任何香草Spring MVC(不是引导应用程序)的示例项目。

  • 对于hidden=true,我希望这个参数在swagger-UI中不可见。但确实是。是我误解了这个参数,还是它没有做它应该做的事情? 我希望这个参数在api-docs中,生成能够使用这个参数的客户机,但我希望它在swagger-ui中是不可见的

  • 我试图让ESLint让我使用对象的Rest/传播。尽管我尽了最大努力,我还是得到了这个错误: 当我悬停在椭圆上时(<代码>...)用红色弯弯曲曲。 我的看起来像这样: 我确信prefs正在被阅读,因为规则、插件和样式指南正在按预期工作。 要启用对象rest/spread,是这里的关键(哈哈),它似乎对其他人有用。然而,它拒绝为我工作。我不知所措 更新:我使用的是Visual Studio代码v1.