开发喵星球

若依微服务 ruoyi-auth 在 Knife4j 中不显示的问题(373)

在 RuoYi 微服务框架中,ruoyi-auth 模块的 API 文档可能不会显示在 Knife4j 中,这通常是因为默认配置过滤了 ruoyi-auth。以下提供的教程详细说明了如何一步步解决这一问题。

解决方法

一、添加 Swagger 依赖

首先,在 ruoyi-auth 模块的 pom.xml 文件中添加对 Swagger 的依赖项。确保包含 ruoyi-common-swagger,以便项目能够正确生成 API 文档。

pom.xml 文件中,添加如下内容:

<!-- RuoYi Common Swagger -->
<dependency>
    <groupId>com.ruoyi</groupId>
    <artifactId>ruoyi-common-swagger</artifactId>
</dependency>

二、添加 @EnableCustomSwagger2 注解

ruoyi-auth 模块的启动类上添加 @EnableCustomSwagger2 注解,以确保该模块启用 Swagger 支持。这样能够在模块启动时自动加载 Swagger 配置。

@EnableCustomSwagger2

三、修改 SwaggerProvider.java

最后一步是修改 SwaggerProvider.java 文件的 get() 方法。在这个方法中,系统会根据配置过滤掉 ruoyi-auth,导致 API 文档在 Knife4j 中不可见。为了解决此问题,可以注释掉将 ruoyi-auth 排除在外的过滤代码。

找到 .filter(predicateDefinition -> !"ruoyi-auth".equalsIgnoreCase(routeDefinition.getId())) 这一行,将其注释掉即可。完整代码示例如下:

@Override
public List<SwaggerResource> get()
{
    List<SwaggerResource> resourceList = new ArrayList<>();
    List<String> routes = new ArrayList<>();
    // 获取网关中配置的 route
    routeLocator.getRoutes().subscribe(route -> routes.add(route.getId()));
    gatewayProperties.getRoutes().stream()
            .filter(routeDefinition -> routes.contains(routeDefinition.getId()))
            .forEach(routeDefinition -> routeDefinition.getPredicates().stream()
                    .filter(predicateDefinition -> "Path".equalsIgnoreCase(predicateDefinition.getName()))
//                    .filter(predicateDefinition -> !"ruoyi-auth".equalsIgnoreCase(routeDefinition.getId())) // 注释掉此行
                    .forEach(predicateDefinition -> resourceList
                            .add(swaggerResource(routeDefinition.getId(), predicateDefinition.getArgs()
                                    .get(NameUtils.GENERATED_NAME_PREFIX + "0").replace("/**", SWAGGER2URL)))));
    return resourceList;
}


通过上述代码修改,即可成功取消 ruoyi-auth 模块的过滤,使得该模块的 API 能够在 Knife4j 的文档中展示出来。

总结

在 RuoYi 微服务项目中,通过增加 Swagger 依赖、启用 @EnableCustomSwagger2 注解以及调整 SwaggerProvider 配置,我们可以成功解决 ruoyi-auth API 在 Knife4j 中不显示的问题。

   
分类:Java/OOP 作者:无限繁荣, 吴蓉 发表于:2024-10-26 17:58:16 阅读量:42
<<   >>


powered by kaifamiao